I'm using spartan 3E-100 CP132 fpga board to display a basic plus image on a monitor. I have tried using 800x600 72 hz and 640x480 60 Hz but I always get a distorted vertical lines. Is it because the on board oscillator is silicon but not crystal so it's not precise enough? is there a way to avoid this? I've put the image I get
Yes, it's because you are using the "silicon" oscillator.
The basys2 board also provides a socket for a crystal oscillator. If you plug in a crystal oscillator and use its clock signal the jitter is gone and the VGA image will be fine. I have tried it myself.
BTW: The manual tells you about that:
("may realize a slight improvement" is a strong understatement)
See page 3 in the Basys2 manual.