You already have reasons why you can't. But here are some thoughts about how you might:
Wine 1.6 will let you run a fair number of Windows applications on Linux. Given your application, it would probably work fine if you write it for Windows and then use Wine on your end to run it. Obviously, that makes it easy for your friends because they are running Windows.
The mono project works under Linux, as well, and provides a limited subset of .NET. .NET uses a low level language (MSIL/CIL) and VB.NET, C#, and F# from Microsoft all target .NET. If you write an application that targets the mono subset of .NET (somehow... and you'd need to research it), then it should theoretically run fine on Windows. .NET/mono read up the same executable formats, do "just in time" compilation of MSIL into machine code, and provide a base set of .NET style classes and other services. Might be another way to go.
Java comes to mind, of course.
Take a look at Codeweaver's Crossover 13, as well.
And I think there probably are a number of software compiler/interpreter tool vendors creating tools that will cross target a variety of operating systems. I know for certain some of them target IOS/Android/Windows.