Vejo muitas informações antigas sobre essa questão, e muitos artigos circulando pelas Interwebs, mas não sei dizer exatamente onde estão as coisas.
Basicamente, quero escrever código C # que possa ser compilado em um aplicativo nativo do Windows e também em um aplicativo nativo do Mac (sem Parallels, Wine, etc.). Isso pode ser feito?
Produtos como o Xamarin são o caminho? O site da Xamarin diz "Use o mesmo idioma, APIs e estruturas de dados para compartilhar uma média de 75% do código do aplicativo em todas as plataformas de desenvolvimento móvel". mas não sei dizer o que esses 25% do código do aplicativo específico da plataforma podem acarretar ... Também não sei dizer se eles são direcionados ao OSX e Windows, o site deles é muito centralizado em dispositivos móveis.
[adicionado mais tarde]
Resumo: O Xamarin não foi projetado para criar aplicativos de plataforma cruzada - o que eles oferecem é uma maneira de escrever aplicativos Mac em C #, usando as operações da GUI do Mac. O que eles recomendam é escrever toda a sua "lógica de negócios" em várias plataformas e, em seguida, escrever duas GUIs completamente separadas - uma para Windows e outra para Mac.
O C # / Qt parece estar em suas fases muito iniciais (embora se alguém tropeçar neste artigo em 2016 ou mais tarde, vá conferir).
Parece que o mono fará várias plataformas, incluindo a GUI, mas somente se você usar o Windows Forms.