Things Supported by MONO (PROS):
1- MONO perfectly supports the whole .NET framework up until version 2.0.
2- Support for Windows Forms is almost complete and it has never troubled me.
3- The MONO Project also provides a .NET Binding of GTK+ called GTK# included in MONO and provided as an installer for .NET 1.1 and later.
4- Mono runs exes compiled by the .NET Framework (The vice-versa is also true till .NET 2.0)
5- You can run Windows Executables (.exe) with MONO from other platforms directly without needing to cross-compile.
6- Microsoft Silverlight has a MONO implementation called MoonLight.
7- You can embed the MONO Runtime into your executables (optional and untested).
Things not Supported (CONS):
1- No or incomplete support after .NET 2.0 including new things like WPF.
2- MONO only completely supports C# and a little of VB (C++ .NET and Boo are not supported)
All in all MONO is completely compatible with the .NET Framework as long as you are using .NET 2.0 or earlier, hence .NET 2.0 or earlier is completely cross-platform, but things made later can be a problem. So if you are using only ,NET 2,0 or earlier features in your code, you can run it perfectly with MONO.