@rbt86 great post. Very helpful to clarify matters.
I'm using the 3GS, and it has enormous issues with wifi, sometime snot connecting, sometimes completely sluggish, usually no response and no throughput whatsoever.
I had first experienced this when the WiFi network was set unsecured; no throughput.
I then set the network up WPA2-AES and used a simple 8 char passcode. No dice, very intermittent wifi, very slow connection, sometimes no throughput.
My housemate has a 3GS as well, with no problems whatsoever.
Just yesterday I set my router to be unsecured again, and I am seeing consistent blazing speeds from the handset. When i get home today I will try it again, to see what issues I could isolate or identify.
The various suggested fixes being thrown around here are ridiculous; I can't be putting my bloody phone in a freezer, and I can't be flipping on and off airplane mode.
You may get some mileage from these triangulated tests I tried a few weeks ago:
http://nabidana.com/2009/07/15/iphone-3gs-wifi-speed-inconsistency-report/
There's a PDF to download of the test details.
I was led down a couple of blind alleys which you may wish to take further:
1. It's to do with location services. I don't think I agree with this
2. It's to do with interference on wifi channels
3. It's to do with encryption on wifi channels.
If I had to guess (and everyone else is, so why not) I would say there's something going on with sleep modes and battery conservation. I won't elaborate.