[1]:http://technmarketing.com/iphone/peter-vesterbacka-maker-of-...
- Resolution differences, and no real scalable interface APIs. - HTC vs Blur vs Samsung's distribution of Android. They all dick with stuff their own way. - Physical buttons on each device. Some are overly sensitive capacitive buttons, clicky buttons, or high latency. Each require model specific code.
You can verify this by searching the release notes for apps in the Market. There's commonly caveats for certain models.
Keep in mind, Apple occasionally charges for iOS upgrades, so requiring an upgrade effectively increases the cost of your application by a nontrivial amount. Not all users want to upgrade, especially when upgrades degrade performance and have limited new features for older devices.
Apple attributed the fee to strange accounting rules (something dealing with when revenue is recognized - I don't exactly recall off hand) - rules which were recently changed. Just an excuse to milk some more cash out of iPod touch users? Maybe - I won't argue with you on that. But as of iOS 4.0, Apple no longer charges iPod touch users for updates.
"Not all users want to upgrade, especially when upgrades degrade performance and have limited new features for older devices."
Here is the real roadblock to updating. 4.0 has rendered my 3G frustratingly unusable. In my mind, those who haven't updated fall into three camps:
1. Those who jailbroke and haven't gone through the hassle of updating
2. Those who could care less about new features/aren't aware there is an update
3. As you mentioned, those who have older devices and don't want to update because of performance or development reasons