For iPhone, you will always need a Mac if you're thinking about doing Native Apps. (Apple make it clear in all Keynotes: Apple Software + Apple Hardware)
Every Android developer here knows it's a pain to test their app in all Android Devices out there cause no one has the same Operating System, they always have a changed version for each mobile company, Apple makes it clear that you need to use their, and only their equipment
Even if you're doing an HTML App and wrap it up with a wrapper framework like PhoneGap, you will need a Mac to compile the code and give you the packages to upload into AppStore.
There is other Frameworks like Titanium witch they will support Windows machines, but I don't recall how they compile the code to the AppStore, probably the same way as PhoneGap, and for that you will need a mac.
PhoneGap and Titanium, as well Sencha Touch, are Frameworks that you can use a language that you know best (HTML and Javascript) - Only Javascript in Titanium and Sencha, and outputs the code in a way that is very similiar to a Native App, and can be easily port to any other OS like Android, Windows Phone 7, Meebo, etc. Just read a little about each one.
Sencha and Titanium are paid frameworks, while PhoneGap is free.
Best approach if going Native on this is buying a used MacMini from eBay or similiar, or even run a Hackintosh (OSX for Windows Machines) in a VM... end to end, you will always need a Mac.
And there is MonoTouch as well, now from Xamarin and the amazing team of Miguel de Icaza.
Even though, you do need the Mac to convert .NET code into "Objective-C" (for the ones that know the compiling process, it's machine code, but for the OP, it's simpler to assume this).
You can use Visual Studio in a Windows machine to program, but you will never compile or even run or debug... you will always need MonoDevelop (The Visual Studio of Mono) and a free MonoTouch license to run and debug in the Mac iPhone Simulator, but you will need a paid license for going to the AppStore.
just for clarification, you can develop everything for Android using Mono for Android, as the Framework where Android runs exists for both Operating Systems (Java), and for this, you will have the ability to use Visual Studio to code, compile and run in the Android Simulator.
As said in the beginning ... you will be best with a used Mac :)