I believe Unity has a special "iPhone editor" that only runs on the Mac, and doesn't open projects saved on the regular PC version. With ShiVa you can create and preview an iPhone project with the Windows editor; you still need a mac to test on the iPhone and to create the app file for distribution though. But you could conceivably publish your app on the app store *and* put a playable demo on you web site with ShiVa.
We are developing all our games on Windows (thanks to POWERVR SDK available for win32). We have a application layer which is written for win32 and MacOS. Then simply write games on Win32, commit, checkout on Mac and compile. Btw, all is done in C++. MacOS App layer on ObjC, just transfers into C++ in update func.
Like most developers coming from a PC background, we also do almost all our work in Windows (Visual Studio) using the PVR emulation layer. We have a system layer in our engine (UtopiaGL) that completely shields the client code from the platform, so we don't notice any real platform specifics when writing code. We do our handset testing using XCode of course. Interestingly, we hardly use the iPhone simulator at all. I find it pretty slow for any kind of heavy 3D. I get a clean 60fps all the time on our PC build, which makes recording video a whole lot more pleasant. Obviously, this applies to projects that don't need to mix in UIKit stuff etc. There are some challenges per App to do with input (like simulating the accelerometer), but it's pretty painless.
So many friggin Options, but has to go thru a mac, no wonder the Mac sales went up "If" one makes somethin on a Hackintosh, can Apple tell if it was made on it?
Repeat after me; UNITY. It's proven and runs pretty-much the same on PC & Mac. Eventually, you'll have to go to your Mac, to deploy, but you can prototype using Unity on WinBlows or the Crapintosh (I'm platform agnostic, so I'll slam them both, thank you... ). I do all my modeling, texturing and audio development on my PC, then code, build and test on my Mac. I have a local network where my files reside that both machines pull from and there you go. This works fine, but I am a one-man-show, so I'm not sure if it would work for everyone.
Unity is a 3D engine, which is overkill for most games. I'm one of those people that thinks that 3D is merely a tool and should only be used when it is necessary. Unity does use a standard scripting language (JavaScript), however I am not a fan of using an IDE/UI for this type of development. I know when I need to link a script to a friggin cube, I don't need a dropdown box to help me. Unity suffers from overkill, much like Torque (which is why I ultimately dropped it). It's a good solid engine, it just doesn't suit my needs.