If you own a helmet with a removable interior lining, then you pretty much have it made. You remove the lining and/or the cheekpads and throw them in the laundry machine at delicate cycle, while that is washing, you can clean the outside of the helmet with a soft cloth/towel/micro fiber and mild detergent. Moisten the soft cloth/towel/micro fiber, put a few drops of mild detergent on it, and wipe the shell gently, the detergent will do it's job with the grime/dirt/etc and after you're done, you simply wipe off with water until the detergent is gone. You'll be left with a shiny clean OIL FREE shell.
BUT for those of us with helmets that do NOT have a removable liner.. the job is a little trickier. Skin oil and sweat builds up and all the "spray cleaners" just don't quite cut it. I've tried helmet fresh and all it did was make it smell better, and I've tried Motorex Helmet Care Spray, which yielded same results, all fragrance, minimal cleaning effect (on the lining).
Follow these steps if your helmet doesn't have a removable liner and smells like poop.
Don't overdo it, but don't be cheap with it. If your helmet REALLY smells, then go ahead and put some more.