A thought occurs to me (although I don’t do iPhone development).
One possible approach to multi-tasking on the iphone might be to allow a background thread that complied with some sandbox requirements to execute with access to certain apis only. (Sound output being an obvious one, internet access being another, possibly hardware interaction) You wouldn’t be able to do user interface tasks (except some kind of notification system) and definitely no way to switch apps without user intervention.
Apple probably has something totally different on the way which is much cooler but this is my best idea so far
I presumed Apple were worried about CPU usage and battery life and that’s why they don’t allow background tasks. It’s done nicely on Android: if applications want your attention they can put a notification item in a list and an icon appears in the menu area: pressing the icon switches back to the app.
http://blog.rlove.org/2010/04/why-ipad-and-iphone-dont-support.html has an explanation of why there’s no multitasking. It’s all to do with keeping state across instances of the same application.
It seems that I was fairly close in my predictions after all if this article is to be believed. You get a paused app, but a service thread can continue with certain kinds of tasks.
They also seem to have android style notifications and switching (using an Apple style expose switcher, but functionally identical to Android)
I’m still actively looking at buying an Android device though (like the HTC Desire)