For maximum portability among smartphones, I recommend Javascript, HTML, CSS. It's the only way to run on certain systems you don't mention (such as Palm Pre and Google's ChromeOS), and (with suitable restraint in using advanced features, if you can) it's the one and only way to write your app ONCE and have it run on an incredible variety of platforms. Especially with some server-side support (unless your volumes are huge you can get that for free with Google's App Engine), it's quite a powerful and effective solution for many needs.
Otherwise, you need Objective C and Cocoa for iPhone (excellent technologies, really well supported by Apple esp. if you have a Mac, but won't help for other smartphones AND nothing else besides ObjC or JS will run on the iPhone), etc, etc.