C # будет сложно использовать кроссплатформенность, если вы не хотите отказаться от Linux. Вы можете отлично запускать проекты Silverlight (даже в качестве настольных приложений) на Windows и Mac, если вы используете Siverlight 3 или 4 (обе среды выполнения / SDK бесплатны). На самом деле это отличный язык для кода, который позволяет вам действительно легко и весело делать пользовательский интерфейс. Тем не менее, порт Mono для Linux имеет тенденцию зависать от версии Silverlight на Silverlight, поэтому вам не повезет.
Если вы предпочитаете языки с управлением памятью, и для этого есть множество причин, у Java есть множество способов разработки на разных платформах.
Qt хорошо - я сейчас использую его для мобильного-linux и windows-приложения, но оно не идеально. Существуют утечки памяти в версиях 4.5 и ранее, связанные с отображением значков, и синтаксис может иногда расстраивать, если вы не привыкли к C ++. Даже если это так, иногда это забавная игра в догадки о том, когда Qt очищает вас (и злится, если вы сначала удалите вещи), и когда вы сами по себе. Правила теоретически просты в этом (виджеты удаляют своих детей), но я считаю, что это менее чем надежно.