Had this problem on a WinXP PC where the resolution would change back to the basic default on every boot and not keep the settings I was selecting of 1680x1050.

I've finally found a solution to this issue however is does require EDITING the registry.

DO THIS AT YOUR OWN RISK.

BACKUP YOUR REGISTRY FIRST

Editing your registry may have undesirable consequences and stop your PC from functioning so also may you sure you have your installation disks or have a working backup image just in case the following makes your PC unusable.

To get the PC to keep screen settings I wanted I found I had to delete the obsolete keys from the registry.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video]

Removed anything from here not associated with Nvidia, had a few keys with ATI settings left over from the previous graphics card so removed those.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video\{931B506A-4028-4AC2-BAFC-4D88608FED7A}\Video]
Have look here, nb 931B506A-4028-4AC2-BAFC-4D88608FED7A will vary from PC to PC. When you click on the 2nd video box you will get a brief description if it's a ATI control set you will see ATI next to the service. Nvidia is NV.

[HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\VIDEO]

DefaultSettings.XResolution
DefaultSettings.YResolution

Deleted any keys from here which didn't have above settings of 1680x1050 - please note that if you try to modify the above keys the number you get to modify is in hexadecimal so 1680 is 690.

One key didn't have any data so I left one in the registry.

This resolved the issue I was having, I have seen may different reasons given on the web for this happening so it may not work for you, although I found none stating this method.