I've tried re-loading drivers, but still no joy.
What's interesting is how it works with a terminal. When I attach a terminal to the same cable and same laptop, it happily shows hundred of different options for the display, up to 2048x800 and they all work. The moment I plug in the projector, it only gives 640x480.
Under OS/X the same projector happily displays 1280x800 and lots of other options, with no problem.
So the projector can handle many different resolutions. The laptop can display many different resolutions with the DVI cable - but only on a terminal.
So there is a bug where sensing a projector causes the driver to freeze onto 640x480.
It would be really useful to know how to fix this bug!