One thing to keep in mind is that most shampoos for humans and pets contain sulfates and other harsh chemicals that cause the skin to produce oils more quickly than if you had not used them. When the skin is stripped of it's natural oils it causes the skin to over produce oils so your dog gets icky faster. A good all natural product will help with this issue.
Sometimes certain foods can cause the skin to emit an odor. You might want to check the ingredient list on the food you are feeding and see if you feel it contains foods that are healthy for your dog.
The best products I have used on Gracie have been the Yorkie Splash and Shine from:
Yorkie Splash and Yorkie Shine | Yorkie Shampoo and Yorkie Conditioner
and WEN. She smells really nice for days and the Yorkie Sheen is good for spraying on the coat before combing and brushing. It has a wonderful fresh scent and does not over condition the coat.
There are other good all natural products out there of course, some not as good as others and in varying price ranges. Just read the label well. Some may advertize one or two natural ingredients but actually contain a lot of chemicals as well.
Gracie sleeps in the bed every night and more times than not gets under the covers. We don't have any issues with bad odor. She get s a bath every week and combed at least once a day.