Wearing a headband or beanie under my helmet has virtually eliminated odor problems. They go in the wash with my cycling stuff. I recently switched from a headband to beanie because it eliminates the helmet racing stripes in my hair.
Last year I gave my helmet a good cleaning outside in a bucket of bleach and soapy water, and haven't needed to clean it since.