Hello grnhsgrl and welcome to Mrs. Clean's Forum!
This is a common problem that we can help you with.
You would treat these stains the same way as perspiration stains or grease stains. There are so many great liquid laundry detergents on the market today that specialize in treating tough protein/grease stains. The first step is to use liquid laundry detergent with oxygenated powers and mixed it with washing soda or baking soda. (Washing soda is more powerful than baking soda, so washing soda is preferred). The washing soda super powers the laundry detergent and makes it more effective. Treat the affected area with the mixture and let sit for 30 minutes. Launder as usual and air dry.
You can also try dishwashing liquid (such as Dawn) and use it as directed above except when you launder the sheets, (especially when you have a whole load of them) add 1/4 of a cup of Dawn to the wash with 1/4 of a cup of Simple Green.
Also, if the oil stain is a bit dark (or your husband works as a mechanic/construction worker) you may want to try "goop". This is a hand cleaner made specially for removing grease from hands and clothes. Rub it directly on the stains and launder as usual.
If you do not have success with these methods, there are other ideas for removing grease stains.
The other question you had on keeping the stains from coming back is very difficult. The only sure bet is to have your husband wear pajamas. When people sleep, they loose dead skin as it will rub or flake off with the tossing and turning. Also, men tend to get warmer and will sweat (usually more than females.) This will leave a "grease looking" stain. The only way to limit the severity of the stain is to have your husband shower before bed every night and change your sheets every 3 days. Other than that you will have to find a method that works more on the removal end versus the preventative.
Good Luck and let me know what works best!
Mrs. Clean NW