Whilst doing cross platform back-end coding with C# is workable, the UI side of things is another matter. The PocketPC version of WinForms doesn't have all the functionality of WinForms on Windows. So you can't just take your Windows UI and chuck it onto the PocketPC (but then of course your typical Windows UI won't make sense on a PocketPC anyway).

On the OS X/Linux side of things, using the Mono .net stuff most of your Windows back-end C# will work without change (you can even compile with VS.NET and the run the code under Mono).

There is WinForms for OS X, but it probably isn't really ready for production work yet. When I ported a C# app from Windows to OS X I ran all my back-end code C# using Mono but recoded all the UI stuff in native Mac ObjectiveC code.

You also need to be careful if you are talking to databases and stuff like that, I don't know how far along the Mono database components are.
_________________________
Remind me to change my signature to something more interesting someday