oil and grease can cause it, but silicone products like Armor All is usually the cause.
If you are spraying with a paint gun, you can get fisheye preventer to mix in with the paint. If you are using a rattle can, prep as usual, but when spraying the topcoat give it a light coat to see if it looks like its going to start fisheyeing on you... if it is then just let it dry for 30 minutes and give it another light coat... let it dry, then the next coat can be a bit heavier. The light coats will usually seal off the problem.
just make sure to keep the armor all away, very very far away.