I agree with the other replies, an emulator such as Nintendulator is great for debugging timing-related stuff. Bugs in general seem to just turn up in the program, and an emulator doesn't need to even be accurate to find those.
Unfortunately there's not a devkit you can just buy and start using, but a pretty good one can be built with the stuff available. An EPROM emulator would be good ("Ostrich 2.0" is one), but that involves replacing and/or rewiring the ROM with an existing cart. CopyNES is pretty good, but involves the delicate operation of desoldering the CPU. PowerPak could be pretty good if used with a controller port to USB adapter.
Back around 2005 I was working a lot on making a complete devkit thing, it would have been my Squeedo cartridge (
pic) and a 5V to RS232 adapter (detachable so it could be used with Squeedo, NES and SNES controller ports). I kept upgrading the MCU and getting more ambitious with the firmware, also with the PC-side software (at the time I'd only ever programmed in assembly, which wasn't much help much for the PC stuff, though I've learned C since then). After a while I guess I got burned out and took a long vacation from it, started "getting out more", heheh. By the time I was ready to get back, of course I had learned a lot more and wanted to redesign, thus the cycle continues. I guess I haven't wanted to make a real cheap simple devkit, I just keep wanting to push up to the limits of what I think is possible. But still I have other related projects to finish before I can get to that one again.
And actually, one of those higher-priority projects I guess is a simple devkit, at least it'd be an inexpensive but decent spec'ed flashcart. Though it'll need a controller port (or expansion port) adapter to work as a devcart/bootloader thing, I'm not sure if I'll have to be the only one building controller port cables or if anyone else will supply something similar or what (I'd like to see those become rather common/inexpensive for use by game players as well). Xious, chykyn, and myself have all been working towards making some fun stuff with the expansion port, I think that may work out pretty well for developers and well as users.
BTW, sort of a rambling post, forgot to mention that debugging over a serial port is IMHO a pretty decent and easy way to test some stuff. It's easy for the NES to send memory dumps, event logs, or anything you'd want in ASCII or binary format to a terminal program on your PC.