Ваша лучшая общая ставка - использовать .NET. В то время как мы сосредоточены на разработке пакета приложений, мы сохраняем технологии как можно более кросс-платформенными (я бы использовал термин «универсальный», но это было бы странно).
Сначала создайте общий дизайн / архитектуру. Затем изучите технологии, которые вы рассматриваете. Например, если ваше приложение предназначено для платформы Mono, существуют технологии MS, которые вы даже не должны учитывать (MEF приходит на ум).
Не позволяйте обсуждению Linux / Windows / Mono помешать вам достичь чего-либо. ;)
Редактировать на основании комментария Ама. Я не осознавал, что вас действительно беспокоит, было ли решение использовать C # лучшим решением. В свете этого я добавлю немного больше.
Моно написано на C #. Популярность огромна. Добавьте гибкость C # и расширение (более или менее) C ++, я действительно не думаю, что вы можете ошибиться. Как я уже говорил выше, есть еще соображения, о которых вам нужно знать.