Stains on your dog's fur vary in composition, so some are more stubborn than others. If they don't come clean right away, more elbow grease and repeated cleanings should do the trick. If you're bathing your dog frequently, opt for a gentle, soap-free, moisturizing shampoo to avoid dry, irritated skin.
A bath might not be necessary, particularly if you only need some spot cleaning. Scrub affected hair with a doggy wipe. Alternatively, wet a cloth with warm water and a dab of human baby shampoo or mild canine shampoo and scrub the stains. Or, make your own spot cleaner by stirring warm water into 1 teaspoon of baking soda until it forms a paste, then scrub the dirty fur with a cloth or toothbrush.
For widespread stains, it's bath time. Human baby shampoo or mild canine shampoo might work, but enzymatic cleansers offer tougher action. For white hair, use a whitening shampoo; choose one with a bluing agent, especially if coat stains are somewhere on the yellow or beige spectrum. You can also make pooch shampoo by mixing 1 quart water, 1/3 cup glycerin, 1 cup white vinegar and 1 cup mild liquid dish detergent; shake well before use.