We have a great emulator story. You can test your application on a virtual device that is running the real O/S binaries. The story improved with Visual Studio 2008, due to the release of Device Emulator 3.0 (as part of the Windows Mobile 6 SDK's). A potential challenge with the Windows Mobile SDK's is that it requires Visual Studio to be installed. So if that's a problem, check out the Microsoft Device Emulator 3.0 Standalone Release. I haven't personally tried this out since I always have VS installed. But if you need this ability, let me know how it turns out.
Another thing that's cool about Device Emulator 3.0 is that it supports an automation interface. Now you can launch emulators from managed code or even from Windows Powershell (see Loke's post on this).
Also note that WM 6.1 Emulator Images have been published. So, if you don't have a WM 6.1 device and you'd like to see the new features, now you can!