This applies to the original HTC Desire, codename Bravo. The instructions have been tested to work on the GSM version of the phone with Android 2.3.3.
How to enter Safe Mode
Power off the phone.
Press and hold down the menu button, and then press and let go of the power button, but continue holding the menu button. The phone will power on and start booting.
The phone will vibrate when it enters safe mode. Let go of the menu button when you get past the HTC logo with "quietly brilliant" animation, or when you feel the phone vibrate. You will see the text "Safe mode" in the lower left corner of the display if the phone has entered safe mode properly.

How to leave Safe Mode
To leave safe mode, follow these instructions.
While in safe mode, press and hold the power button until you see the power options menu.
Tap the option "Power off". The phone will now leave the safe mode and quickly reboot into normal mode. Note that it will not actually do a power off. If you want to power off repeat these steps once more (while in normal mode).

Important notes about Android 2.3 and Fast boot
If you have upgraded to Android 2.3.3 then you should have "Fast boot" disabled. If Fast boot is enabled the phone will not do a complete power off. This has the advantage that the phone boots more quickly. But to enter safe mode the phone needs to be completely off. You can achieve this by either disabling Fast boot first, and then powering off the phone. Or you can power off, with Fast boot enabled, and then take out the battery to disconnect the power source, and then put it back in. Then you can enter safe mode as described above.
You will find the Fast boot option by pressing menu button, then going to Settings, Applications, and then check or un-check the option "Fast boot".
If you have Android 2.2 or below, then you don't need to worry about Fast boot. You can check which version you have by pressing menu button, then going to Settings, About phone, and then Software information.