Ok well there are actually a lot of reasons that have been though up to answer this question, but I've been able to discern which is right and which is wrong.
The reason why veins look blue even though blood is red is simply because of the difference in how the skin let's light pass through it. To actually see an object, light has to fall on it so that your eyes can actually general an image in your retina.
Now in the case of light causing veins to look blue. Firstly, for an image to form in our eyes, or for us to see, light has to be reflected back from that image into our eyes and depending on the wavelength of the light and material thats reflecting it, we perceive different colours. As far as skin goes, it mostly doesn't let much light pass through it, especially blue light and thus reflects almost all light, and that's why people's skin are white (depending on how much melanin they have). Blood on the other hand absorbs almost all light but reflects red light and that's why blood is red.
Veins however are located just under the skin, and at about 0.5mm under the skin, it's mostly red light and blue light that's reflected. Seeing as blue light doesn't pass through skin well, it's reflected. Thus, when you see veins and they appear blue, you'll know it's because vessels under the skin at about 0.5mm of depth don't absorb blue light well, instead they reflect them and it's that reflected light that your eyes pick up and tell your brain that veins are blue.
I hope this helps