I have something I want to add.
The 3.0 software has to be backwards compatible. Here are my thoughts:
Apple and it's Developers are going to want to sell applications to as many users as possible. Why would Apple put a restriction on which iPhone OS runs on which iPhone model? Are the developers then supposed to make 2 separate apps... one that is iPhone 2.x compatible and one that is iPhone 3.x compatible just to make sure their Apple is sellable to anyone? From a buisness point of view, I don't think Apple wants to make it that complicated. There should be one iPhone OS that runs on all iPhones. I don't think they really want to start alienating iPhone 3G owners. Besides, if you DO need new hardware to run the new OS, why would Apple demonstrate the new OS months before the new hardware and get us all excited and then say... Oh, sorry... you have to buy our new iPhone to get the new software features. iPhone 3G users are still paying AT&T and Apple, so we should be treated fairly.