I had the same dilema but in the end went for the iphone. The iphone will do all of what you ask. There literally is "an app for that"…
Battery life while running GPS apps on mine is about 3 hours but you can get booster packs to double that. All smart phones suffer from poor battery life under intense use.
If the Android/HTC phones had been more established then I'd have probably went for it instead, my next phone will have Android.