edit - georgemcbay points out that XCode is free. My mistake.
Unless you're willing to enter the grey world of hackintoshing, you need a Mac to develop for iOS (required for code signing step) regardless of how you build your app, even if you use a third-party compiler like the MonoTouch one.
I guess at least if you own a Mac, you're allowed to run Windows on the hardware as well. The same can't be said in reverse, due to software licensing restrictions.
My criticism of having to buy a Mac and use XCode to make an iOS app is in response to the criticism of having to use Windows and Visual Studio to make a Windows RT app. It's the same process. The only difference between Windows RT and iOS is that Microsoft lets you install Windows RT apps on a desktop/laptop as well as a tablet. Microsoft is far from pioneering this requirement by several years and half-a-million apps. Yet people are pushing this like it's a brand new Microsoft innovation.
I've known for a long time that you were restricted to certain APIs when making a Metro app. I had no idea that you could link dlls that had special exceptions, and that there was no way to get these exceptions for your own language runtime.
A dirty little secret which happens to be common knowledge and is mentioned in the tech press at least once a week for pretty much the last year. Yet somehow it still seems to provoke outrage from people who continue to insist that Microsoft is abusing a non-existent monopoly in a market they have no presence in.