Depende da plataforma
Android - JAVA, C # (via MonoDroid)
IPhone - Objetivo C, C # (via MonoTouch)
Windows Phone - C # (Silverlight)
Meego - C ++ (QT)
Symbian - C ++, JAVA
Acho que o Symbian será descartado pela maioria das empresas. Telefones inteligentes são o futuro. E para todo tipo de sistema operacional para smartphone, o C # / mono estará disponível (você precisa pagar mais, mas a usabilidade vale a pena) junto com o idioma da plataforma nativa. Então, você pode ir para C #.
A verdadeira independência da plataforma pode não ser alcançada, mas se você usar C # em qualquer lugar, poderá usar as mesmas bibliotecas principais e ajustar a interface do usuário da plataforma.
Mas para telefones de baixo custo, o C # não funciona. Você tem que ir para JAVA.