dave since you can get into safemode and you can get into Vista via a strange method I'm suspecting either a startup item, which could be malware or a driver corruption.
Go to run>msconfig>startup tab. Disable startup items there.
Also have a look in device manager for anything that shows an error. Right click Computer then click properties then device manager.