On the topic of upgrades, I agree with Apple in not making 4.3 available to 3g users. I think they should have done that with all 4.x.
But for 3G users (and iPod 2 users for that matter), staying on 3.x is not currently a good solution.
Why? If I am on 3.x still (which I am), iTunes wants to make it very easy for me to push the button and upgrade every time a 4.x.x is released (Danger! Don't push the button!). There is no possibility of fixes or security updates. I am basically opting out of the security and convenience of the "always upgraded" model which is a big draw for this platform.
My apps also want to make upgrading easy. However, I've already lost a few apps that way. They now say "XYZ app did not load to ABC device because the software version is not compatible." I must check each app manually, both for requirements ("requires ios 4.x" is a show-stopper) and for user reviews and comments (because there are many "compatible" upgrades that actually cause performance and stability problems for 3.x users). And there is no going back if you haven't been very careful about backing up the .ipa files.
To just say "upgrade to iPhone 4" is a poor answer. It fails on a few levels.
If it's a $50 flip phone, sure. But these are not cell phones. We've been sold on the notion (and the truth) that these are computers. They do nearly everything a computer can do. And their price tag is as high as some computers. Is it too little to ask 3 years of depreciation for such a device? Can I not have 3 years to budget for a pair of $200-600 devices (depending on carrier contract and plus new accessories)? My wife wants one as much as I do, and deserves it more.
I personally don't like the trend of pushing smart phones, tablets, laptops, game consoles, and such devices from the durable goods category to the consumables category. These are not socks, razor blades, or school supplies. It is sad that I expect my $19 toaster to last significantly longer than my $500 iPhone. Here's a great blog post that well captures my feelings:
http://www.emilehanton.com/?p=58
That said, I do plan to upgrade later this year when both my carrier contracts are up AND iPhone 5 is available (assuming that happens in 2011). I don't plan on staying on 3G forever; I just think 2 years for a $500 device is too short a window.
And think of it this way. What do I do with my 3G then? It would make a great "iPod touch". Granted it'll be out of warranty, but with a refurbished battery it could go on for years as the nightstand or office iPod, and give a rest to my overused iPhone. But I fear what 2014 looks like with me trying to maintain ios 3.1.3 and whatever few apps might still work on that device. And how, in 2012 or 13, would I upgrade an app for my iPhone 5 with ios 5.x, and still have that same app work on the 3G with ios 3x?
A solution?
I like Apple's always upgraded approach, and the security, stability, and convenience that comes with it. I don't want the wild west scenario that comes with Android. But there should be a way for Apple to define just a couple tiers of HW/SW, so I can have my old ios3 devices and my new ios4+ devices, both fully up-to-date, both performing well. Make it possible within iTunes to save/store/synch either tier of ios or app, whichever is appropriate for the device.
That would also make it easier for app developers who could define their last-best version for the old platform, and then go charging forward with all the bells-n-whistles of the new. I'm sure there are some developers wanting desperately to implement new features with the capabilities of 4.x but struggling to stay back-wards compatible and regression test against 3.x.
Anyway, just some thoughts from a 3G user who will eventually upgrade, but wants to maintain some value in a still solid and viable device.