конечно же есть. в связи с тенденцией перехода UNIX->Windows Server 2003 IMHO лучше, когда ваше приложение работало и там и там. легче будет потом переходить.
Вопрос в том, что это за программа и как она изначально писалась.
Если это промышленная программа и она имеет переспективу жительства более 10 лет, то имеет смысл сделать её кроссплатформенной хотя бы потому, что всегда можно будет найти платформу, где не ломают API и не увеличивают побочные расходы на разработку.
Если проект изначально разрабатывался под win32 архитектуру, то перенос может быть слишком сложен и делать её кроссплатформенной без открытия исходников смысла не будет из-за слишком больших затрат на перенос. Однако можно начать писать программу под кроссплатформенные тулкиты и ввести вменяемый CVS, что в дальнейшем перенос сильно упростит.
Если программа -- игра-пукалка для офисного планктона, то смысла делать её кроссплатформенной нет, потому что затраты на её shareware-ность будут слишком велики, а технологическое усложнение мелкой программы, которая и так жить долго не будет хорошо на ней не скажется.
До некоторой степени. У нас, например, заказ на Unix/Windows серверную часть, но на клиентскую только Windows. При этом Windows-версия сервера заказана только для демонстрационных целей, т.е. работа с высокой производительностью и особо высокой надежностью не требуется.