It's indeed mostly a burden on the iPhone devs side to support good 'suspension' behavior, and there are some frameworks (like Three20) which more or less offer it 'out of the box'.
I used an Android phone for a while before switching to the iPhone and in most of the cases where I missed running multiple apps only _one_ background app would be enough (e.g., Last.fm and other music (streaming) apps, a GPS tracker, some games).
I used an Android phone for a while before switching to the iPhone and in most of the cases where I missed running multiple apps only _one_ background app would be enough (e.g., Last.fm and other music (streaming) apps, a GPS tracker, some games).