It depends on if it's raining, if there's an "R" in the day, if the date is evenly divisible by 8 and the direction in which I'm holding the phone.
Actually, the
real factors involved are:
1. Overall signal to noise ratio (often mislabeled "signal strength")
2. The type and amount of
backhaul at the cell sites in your area, and how much data traffic they can accomodate
3. How congested the network is. How much on-air bandwidth is available as opposed to how many people are using the network. Voice users typically have priority over data users.
4. The 3G chipset in the phone itself.
So in many cases, it can make perfect sense that you'll get faster 3G speeds in a don't-blink-or-you'll-miss-it town as compared to a major metropolis. In the former case, you might well be the only person using data on a very lightly-loaded network., and so your phone is mostly free to use all the resources it can. In a large city, network usage can be nonstop most of the time, and that clogs up the network.
On the other hand, if that small town happens to get a half dozen iPhone users that all want to transfer data and make voice calls at the same time, then data could grind to a halt for everyone pretty quickly. This is because even though the 3G air interface itself has plenty of room and could handle many more users, the cell carrier might not've bothered to install fast enough data connections to handle more than 1 or 2 data users at once, thinking it would be a rare event. By contrast, in a major city it could take hundreds, thousands of users to make network throughput sink.
There's other things going on too. Theoretically, it's been shown that a cell phone on the move (say, highway speeds) might get slower data throughput than a cell phone that's stationary.
Lastly, the chipset is pretty obvious, seeing as we know the 3GS can download data faster than a previous generation 3G iPhone can.