Check out Balazs's post on using Mono for Fun. He walks through creating a client GUI end-to-end using Mono including designing the architecture, using db4objects for persistence, and nUnit for unit tests. Good stuff.

How I Went Mono
In the last 5-6 years I've been working on the Java/J2EE platform, delivering enterprise applications for various customers. By "enterprise" I mean applications which have to accomodate a large number of concurrent users, have to integrate with various legacy back-end services, have to fit an end-to-end architecture envisioned by the customer, and has to be manageable and configurable in a consistent, straight-forward way. I have found Java and J2EE the perfect platform for this. While there has been a bit of a backlash against the perceived complexity of the various frameworks associated with J2EE, I think the enterprise space with its inherent constraints is really an area which benefited the most from the pluggable, scalable, and manageable aspects of the Java stack.