elbow grease is the best, for a grey/paint/pinto/appy grey/white inhancing shampoo (either the purple stuff from a tack store or grey shampoo for humans will work) and a hard bristled body brush going in circles during a bath can help. But mainly its the usage of a hard bristled brush and the circles which gets the stains out. I have also heard of shout laundry detergent being used but I have not tried it, and I advise always having streaming water nearby, and using VERY LITTLE of the detergent.
Um, hello... my answer, don't get a white or gray or light colored horse that enjoys laying in it... :) Here is my Toby, forever filthy and loving it..... :) I rinse rinse rinse..... or brush brush brush and sometimes use Cowboy Magic which is not magic at all... :) The magic is having a brown horse too... :)
I usually just scrub with a body brush to get off any crusty bits, and then use a hose and a water brush to remove stains, with a bucket in the summer. If not, whitener spray works really well as a shampoo.
A leather cloth (like you use for cleaning windows) with just a little moisture from lukewarm water will get even old yellow stains out of the horses white coat. When you have a lot of cleaning to do (and you a dreading it a little) you can add a couple of drops of champagne to the cloth. It has to be fresh, so the rest of the bottle needs to be emptied by the groomer, and I found that this little addition makes the whole grooming a lot more fun! shiny horses and happy people:)