I was stumped. At work, my Windows 7 laptop with an Atheros AR8152/8158 PCI-E Fast Ethernet Controller was clocking download speeds of 10+ Mbps but upload speeds were less than 1 Mbps.
At home on my cable internet, both speeds were 12+ Mbps.
BTW, I used www.speedtest.com to test my speeds.
The answer turned out to be the Large Send Offload (IPv4) setting on my NIC. It was enabled by default. When I disabled it my work upload speed jumped to 12+ Mbps. It appears that if the infrastructure (e.g. routers, switches) don't support this option the transmits become "bursty" and slow down. My home router (an Apple Airport Extreme) apparently does support this option.
To disable, go to Start->Control Panel->Device Manager->Network adapters->Atheros AR8152/8158 PCI-E Fast Ethernet Controller (NDIS 6.20), right-click then select Properties. On the Advance tab, find property Large Send Offload (IPv4) and change its value to Enabled then click OK.