I think the answer is a little more nuanced than that. You can think of Linux/Mono as a .NET target platform, just like Windows XP with .NET 2.0, Windows Vista with .NET 3.5, etc. Depending on what you want to do, it can be entirely possible to develop .NET code that is compatible with multiple platforms.
When Microsoft submitted .NET to ECMA as a standard, the submitted a subset (called the CLS, common language specification) of what they provide to developers. To give one important example, Windows graphics (Forms, ASP.NET, etc.) isn't a part of the CLS. However, Mono does now support Windows forms 2.0, but it wasn't until relatively recently.
So, basically, you've got to pay close attention to what features you need, and if you like living on the cutting edge of Windows technologies, you're going to be locked out of using Mono. However, if you have the ability to pick which libraries and language features you want to use, you could, if you chose, select a set that is fully supported on Mono, and do much of your work that way.
Testing, of course, is another issue...since you've got completely different implementations, you're still going to need to do a lot of testing on Windows. Remember, Java's design goal was platform independence, but .NET's was language independence, NOT platform independence. So, you would be heading into trecherous waters...