While the order of adjectives is somewhat flexible, we tend to rank quality (stained) towards the beginning of the list, and color (white) more towards the end of the list.
It's not an absolutely rigid hierarchy however, and you can generally move a category up or down the list a few places, particularly when there are just a couple of adjectives anyway.
If you do some research on the order of adjectives in English, you won't even find a 100% consensus because of that flexibility.
So, I'd go with 'stained white shirt' myself, but I wouldn't be bothered enough with 'white stained shirt' to object about it.