There are two categories of products that can be applied to concrete to help prevent stains. The first type of product is a coating, which will stop any and all stains from forming on the concrete, and the second type of product is a sealer which will reduce the penetration of liquids and therefore reduce staining.
Concrete coatings put a protective, visible layer over the surface of the concrete. Coatings are designed to take the "beating" so that the concrete doesn't come into contact with what was spilled on the surface. Your application will directly determine which coating you should use. For example, if you are sealing an outside driveway or patio you want to use an acrylic coating, like the Armor AR350 or the Armor AR500. If you are sealing your garage floor and expect to have oil and gas spills, you want a Urethane, like the Armor UTN60. While all coatings will protect your concrete, different coatings have different abilities and can withstand certain spills better than others.
If you are worried about environmental stains, but don't have issues with oil and gas spills, you can most often get away with the use of a sealer. Sealers do not leave behind a film on the surface, instead they work within the pores to prevent liquids from being absorbed deep into the concrete. Spills on a surface sealed with a sealer typically need to be picked up fairly quickly. While they will help to prevent stains, and reduce the amount of damage a spill can do, they do not leave behind a film on the surface and can't stop 100% of staining. If you want a sealer, consider a water repellent sealer like the Armor SC25 or the Armor SX5000.