Put a stopper in the sink and fill it with several inches of hot water. Add a squirt of dish soap. Turn on the disposal and unplug the sink to let the water flush through. This is different than simply running the tap like we usually do since the disposal will actually fill with water. (Of course, if you wash your dishes by hand, you're doing this regularly anyway!)
Next, we threw a few ice cubes and a handful of kosher salt down the disposal. The ice helps knock food off the grinder while the salt scrubs the sides.
For good measure, we repeated the flushing and then ground up a few lemon peels for freshness.
Voila! This seemed to do the trick and we haven't noticed any odors since. If the smell persists, we've heard that you can add a half cup of baking soda down the drain, then pour on a cup of vinegar. Let it fizzle for about ten minutes and then flush everything out with some boiling water.
A plumber also once told us that most people don't run their disposals long enough. If we cut it off as soon as it sounds like the food is done grinding, sludge and particles can be left behind. He said the best way is to run water from the faucet, turn on the disposal, and don't turn anything off for about 5 seconds after it sounds like the food has finished grinding to be sure it has flushed through.
Do you have a good method for dealing with a stinky garbage disposal?
Related: Survey: How Do You Clean Your Oven?