So maybe this is the dumbest, easiest thing in the world and I’m the only one who didn’t know, but when I upgraded to the iPhone OS 3.0 SDK, I couldn’t for the life of me get the simulator to launch in ACTUAL OS 3.0 mode. You can change the version on the fly with the Hardware>Version menu, but every time I reran my app from Xcode, it’d revert back to 2.2.1. This finally became a problem when I needed to test an app with features unique to 3.0. Luckily, the fix isn’t all that hard.The problem is that, unbeknown to me, there’s an “Active Executable” setting, just like there’s an “Active SDK” setting and so on. For some reason, the Project menu also only lists under the “Active Executable” sub-menu the actual executables listed in your project. If you right-click (CMD-Click) the toolbar of the Project window and select “Customize Toolbar”, there’s an “Active Executable” menu that you can drag into the toolbar. This is nice because THIS menu actually lets you select which executable to use by OS version instead of just by name. For some reason, this is what’s required to kickstart the Simulator into starting with your desired OS version. Note that this menu doesn’t matter when you’re building for the Device SDK, since the device can’t change versions on the fly.
I hope that saved you as much hassle as it would have saved me if I’d been able to find this post in a Google search.