Bleach, Iron Out, abrasive cleaners, etc.
I would imagine the gelcoat is pretty chalky so it will hold onto a stain.
Once you get it clean, there is a product called "PoliGlow" that may be a good choice for putting back a shine on an old chalky gelcoat. (I've used it with good results) Otherwise, you can go the fine sanding and compounding route, to restore the boat to a shine. However, often the finish needs so much sanding that you end up going right through the gelcoat and into the fiberglass.