My iPhone 3GS is almost two years old now, and it doesn't work as it's supposed to. I get dropped reception to the network, and sometimes I get a "Accessory is not optimized for iPhone" when there is nothing plugged in...
My latest struggle was to update the firmware (iOS) via iTunes. First I had to download it three times because it "failed to download", then I had to wait for ages while iTunes packed it up and prepped my iPhone for patching. After some twenty minutes of waiting I shut down iTunes, re-opened it and tried to patch again.
Could not establish a session to the iPhone.
Wait, what? Something went really, really wrong somewhere. I couldn't update it via my pc (restart Windows - check!), nor could I update it via my iMac. There I was, wondering... until I thought of the brilliant idea to restart my iPhone!
Said and done, almost. It would go into a shut-down procedure, but it would display that spinning wheel and keep it going and going and going. After, again, twenty minutes I forced an iPhone shutdown (hold both buttons until it dies) and booted it up again.
It worked on the third time after the reboot. If your iPhone doesn't work - try rebooting it. Hehe.
Everything said, I'm currently considering getting an iPhone 4. I believe Apple makes solid hardware and software, and given the nature of my 3GS I can hardly blame Apple for the problems I've had.