I spent some time with Mono/.NET last year. It worked fine, but not everything was implemented. Specifically, we had some members on the team (the architect being one of them) who liked to include cutting edge features from .NET, that didn't work on Mono (he also had decided to write a large chunk of code in Silverlight, but that's a different story).
The short is: if you're going to do Mono, make sure that you're always having at least one person on the team doing Mono, otherwise there's a moderate chance that you'll lose the ability to run on Mono.
Also, stay away from entity framework. Some people might disagree, but we had problems with it and I hate that framework.