It is clear that Mono Touch is part of the solution as it allows C# code to run on the IPhone, however Mono Touch wraps the IPhone API so does not provide a common API.
There are several options here:
1) Design a platform abstraction layer so you can write your code to the PAL and the PAL on each platform does the right thing. The problem with this is the PAL will resemble the lowest-common-denominator unless you're happy to stub-out the functions that don't do anything on the platforms that don't support them. Your common application logic can then be written in whatever is appropriate - probly C++.
2) Create your common code in something like C++ and your platform-specific code in the platform-specific framework (.NET / Obj-C). This allows you to have your common application logic as a Library which the platform-specific code pulls in.
3) A hybrid of (1) and (2) using #ifdef/#endif pairs to pull in relevant parts. I don't recommend this - it's painful.
4) Write the code for each platform completely independently and share the design, algorithms and digital assets (bitmaps, icons, sounds, etc). Yes, more to maintain but gives you best experience on each platform.
5) A web application as OMG_Peanuts suggested. This is a quick win but little-or-no platform-specific features.
It is possible to share code between your Monotouch iPhone application and Silverlight Windows Phone 7 application. Craig Dunn, an expert on Monotouch discusses this in his recent post - MonoTouch meets Windows Phone 7
Have a look at http://www.phonegap.com/.
Support for Windows Phone 7 is coming ;)
A web application, maybe ?
Something made with RoR or Django, with no flash nor silverlight.
MonoCross is a Model-View-Controller system that sits on top of MonoTouch, MonoDroid and SilverLight. So letting more of the UI logic be in common.
Mobile platforms are far from being versatile and act in singularity, Chances are high they'll end up with holistic war much like browsers of today. If I were you, then I'd straight away take a decision to write two separate apps. Even if you get to write some apps using Mono, tomorrow you'll surely have issues with features compatibility commonly or distinctively supported on both phone platforms.
Bottom line is if you wish to leverage from the platform stick to the native platform SDK and tools.