In your situation, Windows Phone 7 may be a real contender - devices are around 3-6 months away from launch, but the developer tools are already available as a free download.
The application development environment is a pure .NET stack: C#, WPF, Silverlight frameworks or XNA (aimed at games), all hosted on Visual Studio 2010, and with a pretty decent emulator available.
I'm more of a kernel guy myself, but I found the development environment and the ease of development of very attractive applications extremely appealing.
BUT one thing I notice from your original mail is that it seems like you may be targeting developing country markets. In this case, it may be that iPhone, Android and Windows Phone 7 are really too expensive for many people, and you would be better off targetting lower cost devices. These are most often Java (J2ME), but on CDMA 2000 networks, BREW is also pretty common.
In the overall scheme of things, there is not so much difference in principle between desktop GUI application development and mobile application development for the more fully featured OS targets (Android, WP7, iPhone). From a practical perspective, however, you need to think about a few things you likely wouldn't worry about on a desktop device:
- Battery life, battery life, battery life. You need to structure your application to use energy like the precious resource it is. Polling is definitely out, and your application should try to be power aware.
- Memory usage needs to be considered carefully. There's rarely very much user RAM available on even fairly high-end devices (I think about 360MB on a Google Nexus One (Android) for example. This tends to mean that you will make use of persistent storage mechanisms rather than large on-memory data structures.
- Your GUI probably needs to be structured around a set of 'screens' rather than a single workspace (as is common on the desktop).
- Mobile versions of libraries tend to be somewhat less complete than their desktop counterparts.
- On many platforms, your application may get 'killed' by the OS if it is running low on memory, and your application needs to be aware of this. Again, persistent storage mechanisms tend to be preferred because of this.
If you decide to target J2ME or BREW, things are far more restricted still. J2ME apps can only rely on about 128kB of RAM, have a very limited set of screen widgets and need to deal with many different screen sizes. The upside is that there are hundreds of millions of J2ME capable devices out there - even very inexpensive devices support it.
On balance, if you want to stick with what you know, Windows Phone 7 is very compelling, but it's going to be a very high end platform to start with (1 GHz CPU, large WVGA display etc). Android may require a bit of learning, but has the significant advantage that some lower cost (say 199 USD) devices are starting to come out, but it remains a very capable and relatively unrestricted (compared to J2ME) platform.
BREW is something of a niche, but if you have a CDMA 2000 network locally, it's worth investigating. It's a bit painful (basically like COM programming, but in the RAW without the excellent Microsoft tools support), but you can get excellent results, and the distribution approach is actually pretty good.