I'll have a nice chuck of time on my hands to work on my emulator this weekend, and want to make the most of it. Using NesTest I've managed to get all of the opcodes implemented. What should I tackle next?
Get PPU timing working: run 3 dots every CPU cycle, run a scanline every 341 dots, implement port $2000, and make an NMI every 262 scanlines. Observe what the game tries to write to $2006 and $2007. This just might be enough to get games to start booting and writing to $4000-$4015, at which point you can start audio emulation.
I'm still working on wrapping my head around the PPU, but we'll see what kind of progress I can make. I'm probably going to hold off on audio for as long as I can.
One thing you could do is implement routines to draw the nametables. Just drawing the nametables is enough for simple but important games like Donkey Kong and DK Jr to run. Just take it a step at a time and don't attempt to do everything at once and do it all perfectly. The first time won't be perfect.