I need to develop applications for a company on some major mobile OSes, specifically, iOS, Android and WP7.
I was initially planning to code three separate applications
Cross platform development requires inserting an intermediation layer between your code and the native APIs. There are several potential costs to these kinds of intermediation layers, including:
performance (interpreter overhead, JIT lag, or loss of cross-compiler optimizations),
memory footprint and app loading time,
whether the intermediation API keeps up with the the latest and greatest device APIs and hardware features soon enough (if you need them),
whether there are device specific (non-cross-platform) APIs that the intermediation API does or does not expose, and whether you can add them,
whether the intermediation layer provides or allows you to override its UX/UI presentation capabilities to make the app seem to behave and look "proper" within each targeted device community or App store,
write once, debug everywhere (plus multi-platform regression testing of a fix for any one platform), and etc.
Note that performance inefficiencies might manifest themselves in faster battery drain in addition to or instead of visible UI lag.
You may have to benchmark and/or mock-up and user test core portions of your particular application to determine whether these kinds of benefits are worth the addition development costs required.