Alright I will answer both vvavepacket's two questions and TeamAlpha's question. I will be going in reverse order by post.
First of all you can get the same thing for cheaper http://www.ebay.com/itm/640-x-480-VGA-CMOS-AL422-3M-Bits-OV7670-FIFO-Camera-STM32-Driver-Module-I2C-/161333211986?pt=LH_DefaultDomain_0&hash=item2590357352
they both appear to be at-least similar.
To fix the glare you are going to have to first of all make sure that bits 7 and 6 in register 0x40 are set to one by default (according to the datasheet) they are set.
Also make sure register 0x55 is set to 0 (brightness should never be changed using this register)
and that register 0x56 is set to 0x40. (Contrast should not be changed like this).
if you want a different brightness you should instead vary the exposure and/or gain settings. It may be that the ov7670 is picking the wrong exposure and gain settings if that is the case the https://github.com/dalmirdasilva/ArduinoCamera/blob/master/CameraAL422B/datasheet/OV7670%20Implementation%20Guide%20%28V1.0%29.pdf
explains auto exposure and auto gain best.
There are some undocumented registers that I have pulled from various places. I just write all those and end up with a nice looking image. I wish I could find out what all the registers do. Is that all the registers that you are writing to the ov7670?
I have attached some pictures I have taken with the ov7670 to show you the quality that can be achieved with better register settings.
@TeamAlpha I have not tried a resistor voltage divider. I have heard that resistor voltage dividers may be noisy so look at the output using an oscilloscope. I just use a buffer IC chip. Also to generate the XCLK clock you need to use PWM. The way you set this up is slightly different depending on which microcontroller you are using. If you could tell me what you have I can further help you with this.