That is a hard question to answer because it depends on a lot of other factors. Trying to get a very specific answer would be hard and even harder, at least for me, to try to explain.
Making the assumption, that the end to end link is stable enough for the window to scale to the maximum, we could say that we need one ACK per every max window size. A typical max window size is 64KB, at least I think that is the default for Windows... it is set by a registry key.
Knowing that, now we need to know what the round trip time is because you will only receive one max window size of data per every RTT; one way for the data to get to you and one way to ACK it. Now we'll play like we are trying to calculate the needed upstream for one TCP socket over a satellite.
RTT = ~500ms
Max window size = 64KB
(64KB * 8)/.5 = Max download would be 1Mbps. The times 8 was to of course turn our byte value into bits.
BTW a lot of times you see window size referred to as buffer and you see the TCP throughput calculation given as (RxBuffer/RTT = Througput). Now we need to calculate the upstream. Hopefully with all the stuff above the answer is obvious, we need two ACKs a second to get back to the sender. Those ACKs are, 20Bs + 20Bs * 8 (IP + TCP header), 320bps a piece. So for a connection with the 500ms of RTT and a max RxBuffer of 64KB we should expect no more than 1Mbps download and 640bps upload.
I hope that sort of got you on the right track. Reading back through it I confused myself...