There is one product on the market which can help prevent these kind of stains that I have used with success. It is scotchguard by 3M. They made it for this very reason, but you have to apply it regularly to keep the seat cushions protected. It works fairly well but is not perfect - and there are no better products on the market that I know of.
Don't take my word for it. Go to the 3M website and look at the over 180 postitive responses on this product. Best of luck.