I have read (in a blog, referencing a call to Coppertone customer service) that avobenzone is the ingredient responsible for those stains. The reason it doesn't show up until after you wash your clothes is that it reacts with the iron in your water. I would assume that people with treated water ("city water", we call it) would not have these stains, while those of us with well water do.
I went to the drug store and bought some sunblock WITHOUT avobenzone. I took some of several sprays and one lotion and applied directly to an old white t shirt, then washed the t- shirt. Guess what? Some of the sunscreens WITHOUT avobenzone still stained! Here are the results, summarized.
*PLEASE DO NOT TAKE THIS AS A GUARANTEE! These are my results, with my water and detergent, etc.
BEST:
OK: I would use these when I had on colored fabrics, NOT WITH WHITE!!!!!
WORST:
SO - No avobenzone does not equal no stains, but it seems to mean the stains will be lighter. Lotions also seem to be better than sprays. Bummer. I am trying to apply and let it sink in before dressing, and when we go to the beach when we HAVE to use sprays to chase down a kid and a husband who hate sunscreen application, I guess we will wear old/colored clothes. I am going to call my local Avon rep and see what she's got for me - I'm willing to pay for something that won't stain!
That said, for stains you already have, I have used "The Works" bathroom cleaner, spraying onto wet clothes (usually right after I take them out of the washer and find new stains) and letting them sit for 15-30 minutes. I have not had any clothes damage - clored and white cotton t-shirts, bathing suits, everything seems fine. I think any cleaner that is made to remove rust stains would work, so try what you have before running out and buying "the Works".