I hear you, it’s not always easy to create an application on many platforms. You want to build an iOS app, use Objective-C. You want to build a Windows Phone app, use C#. You want to build an Android app, use Java. It’s not an easy process, but there are tools, and ways of doing this that may save you some time.
Since you want to target multiple platforms, as you know, you’ll have to code with the specific languages, and even tools for each platform. One of the first thing I would suggest is to think about the cloud. Why think about cloud computing? Because you want to limit to a minimum what will be specific to each platform. There is a way for you to put more logic in a common place, and have your application call a service to get, set or create data. The most stuff you can put outside of your application, the less things you have to recreate for each OS.
Architecture is key when it comes to code reuse. As an example, if you want to build a Windows 8, and a Windows Phone 8 application, even if they used the same technology, the core is not the same. In that case, a suggestion would be to use the MVVM pattern to maximize the code reuse between the two platforms. In that case, C#, and XAML would be the technology of choice since it’s available on the two OS. For more information on the topic, you can read Alnur Ismail post.
HTML5 for native apps
Last but not least, there is always the Web path. If you don’t need a native application to do what you need to do, or access any specific features of the devices, the Web is one solution. Of course, many people will tell you that they want their native apps, but in some cases, the Web application is more than enough.