I don't know about desktop or mobile, but my experience with Mono for web applications has been pretty awful in comparison to Microsoft's implementation. I have a tremendous amount of respect for the Mono team, but it's just not a good enough replacement.
It's actually caused me to stop writing C#, because I can't stand managing Windows systems, but there isn't really a good alternative.
Not really. We've tried running several C# programs on mono, and as of a few months ago, the effort to port them so they will work on mono was pretty intense, and the performance was lacking.
C# (especially when developed in VS) is a nice language and environment, but cross-platform is not one of it's strengths.
I am sure I would have similar issues with Java on *nix because of my lack of experience with both. Cross-platform is definitely a major C# strength at least in the mobile space given the power of Xamarin tool chain. Android and iOS do matter and they are not Windows.
Mono solves everything you complain about and that's the only mention it gets?