Ahh...this is where it is important for a server guy to understand what's under the hood. Since this is two years old I figure he's solved it already. However for posterity or anyone with a similar issue what he probably ran into is this
(TCP window size * 8bits / RTT in milliseconds) = Max TCP throughput in bps
While you might have a Gigabit network a single TCP flow won't likely be able to get that high.
Here is a simple table assuming you have the default 65535Byte TCP window size in Vista
RTT 10 ms => TCP throughput = 52428000 bps = 52Mbps
RTT 20 ms => TCP throughput = 26214000 bps = 26Mbps
RTT 50 ms => TCP throughput = 10485600 bps = 10Mbps
RTT 100 ms => TCP throughput = 5242800 bps = 5.2Mbps
RTT 150 ms => TCP throughput = 3495200 bps = 4.3Mbps
RTT 200 ms => TCP throughput = 2621400 bps = 2.5Mbps
RTT 300 ms => TCP throughput = 1747600 bps = 1.7Mbps
RTT 500 ms => TCP throughput = 1048560 bps = 1Mbps
At 20Mbytes/sec or 160Mbits/sec your roundtrip latency is likely on the order of about 3 milliseconds. The only other way to speed that up is by using TCP optimizers that do de-dup over the wire or splice together fragments into larger packets. Over a LAN that likely isn't going to gain you much for the expense. If you are using SoHo gear like Linksys or Netgear your latency is probably getting introduced by the lack of shared buffers on the switch. If it's a larger switch like a 24 port, try making sure that the two devices are connected to the same ASIC. This will help the serialization delay, but not by much. If you could drop it down to 2ms you'd get a boost up to about 31-32Mbytes/sec. If they are on two different switches there isn't much you can do without new hardware.