My experience is that cross platform app developmet in C# is far from ideal. Windows.Forms is poorly supported in Mono and GTK# is poorly supported in Windows.
That's one thing, but wouldn't it be ideal to be able to develop the application on all platforms to. After my struggles with MonoDevelop, Glade3 and VC#E2008 I've come to the conclusion that there is only one universal solution that is powerful enough and complete cross-platform compatible. Which is Java and maybe JavaFX. Working with NetBeans makes it so easy to develop cross platform! Both development-wise and running the applications is flawless. Also, there are tons of very usefull libraries for Java and the language is very simular to C#, easy to learn if you're comming from C# or C++. I'm porting the XBMC C# library (http-api communication) to Java now and it's almost copy/paste. I'm not yet at the point of creating an interface, but all looks very promising! Having two options for interface design
http://javafx.com/ (which is pretty revolutionairy, but young) or the standard is really cool. Even with hardly any programming experience you can create a nice and shiny interface with animations, video and sound...ect. It feels almost like creating a Cascading Style Sheet. Take a look at the examples! (latest JRE required). The downside to JavaFX development is that it's not yet officially supported in NetBeans for Linux. Eventhough I've managed to install it on my Kubuntu 9.04 development VM.
I love C# by the way! So this isn't about the language itself, but about portability!
The two most important applications I use cross platform and work flawless on both platforms are Eclipse (Aptana, Zend Studio) and OpenOffice. These are worldwide very popular applications and to be honest, I can't think of any (non OpenGL) application that work well on different platforms that are not written in Java. And Netbeans is putting a smile on my face, which is nice to
XbmControl is written using Windows.Form with MS VC# E2008. It wasn't to hard to port to Mono (eventhough I haven't released the version compiled with Mono). But Windows.Forms support in Mono is very incomplete and unstable. After some time I discovered it was a no-go. A little less important, but stilll...WIndows.Forms is ugly on Mono.
XbmControl-Evo is written using GTK#/Glade3 (and Monodevelop). I've stopped development because using GTK# isn't giving me the results on Windows I was hoping for, and GTK# is far from easy to use because of the lack of documentation and the (to me) unlogical strcture of the libraries.
So from my perspective.... Using Java would be real timesaver and make it a true cross-OS app. Maintaining different branches (if necesairy) is easy compared to C#, since you can completely ignore the interface for the differen platforms.