Typically, the rule is to support the lowest version of the OS, which provides features that allow you to ship the product you want. I made all my applications for iPhone OS 3.0 about a month after that, because I needed to support custom copy and paste, as well as email in the application. For the free version of one of my applications, I wanted to try iAds, so I made only 4.0.
Opportunities for internal code enhancements provided by the new OS are a little harder to create rules. As Joe points out, the time you spend struggling with the old way of doing things that you can save by upgrading to the new OS is the time you don't fix bugs or add this great new feature. At some point, the elegance of a new way of doing things (like blocks and GCD) is simply too convincing to ignore, even if it cannot directly add any new features to your application.
On Mac, many developers support the current version of the OS and the previous version released by Apple (Snow Leopard and Leopard, currently). Only when the new OS comes out, they will refuse to support the previous version with one lag. Others, such as Wil Shipley, advocate immediately switching to the new OS and ignoring old versions. The argument here is that people who will not pay for new versions of Apple OS or who do not keep their systems up to date, are much less likely to buy your third-party application.
I also saw this on iOS. For example, I started checking ads targeted at different versions starting from version 3.0 (when iPod touch users still had to pay for OS updates). Although downloading the free version of my application was relatively consistent between 2.x and 3.x users, almost 2% of users paid for the application, and 3.x users did.
None of my billing users complained about the early transition to 3.0 (they spoke well about the new features), and only two people complained that my free version is only 4.0, compared to 56,000 that were updated without a problem. Although I would give a little time for the transition period, I believe in the transition to new versions of the OS relatively soon after their launch. Right now, I'm in the process of creating all of my 4.0 — just so that I can upgrade the codebase.
Finally, the last advantage that you get from the new version of the OS is that you become much more attractive to Apple, which always wants to promote applications using new features in its new devices and OS versions.
Brad larson
source share