The problem is most developers are not aware of what the refresh rate is.
In their programs, they just specify width x height to refer to a video mode, e.g. 640x480.
Instead, they should provide width x height and refresh, e.g. 640x480@60. This way, the correct video mode is activated unambiguosly.
When you only specify width x height, the OS is free to decide what refresh to apply, and it decides wrong.
This illness has only got worse since most devs currently use cross-platform graphic libraries.
Usually, it doesn't help to hide modes, since the OS internally still has access to the 31 kHz version.
With regards to OP's question, as far as I know removing one mode is not possible unless you modified the drivers, and even with that I wouldn't be surprised if Windows managed to get the mode back, since 640x480@31kHz is the most standard, fallback mode ever and it's always supposed to exist.
Setting the desktop to an non-standard mode, like psakhis suggested, is a correct workaround, for the case where the issue happens when the offending program exits and tries to restore the desktop resolution, failing and setting 31 kHz. This works because the drivers don't have a 31 kHz counterpart for your non-standard mode, so even if the program requests it by width x height only, the OS won't fail to provide the correct mode.