Poll: What's the best route to writing mobile apps?

Do you think native code, a cross-platform runtime environment, a thin native shell over Web services, or mobile Web services is the best approach to writing mobile applications?

A number of times in the last several months people have asked me if they should write a mobile app in native code or with a Web application. I've advised people to hedge their bets by making a mobile Web application; but, if they absolutely need a presence in an app store, I recommend using either a cross-platform development tool or the native UI purely as a shell to access a Web service.

The truth is the mobile market is shifting so quickly, and native development is so different from platform-to-platform (not to mention expensive), writing native applications can easily become a money pit as you try to cover enough platforms to really get market share. But I also know many strong proponents of native applications too. What do you think is the best approach?