How do I flash a custom ROM?
First, find a rom that you want from here:
XDA Developers - Desire Index
It lists all the good roms. Be aware that you already need to be rooted. If you want to use apps2sd+, you will also need to have partitioned your card first. See the apps2sd+ FAQ in my signature.
Be aware that you may need to wipe. However, for stock / HTC sense based roms for the desire (not including ports such aas the desire HD ports), you MAY get away without doing a data wipe. AOSP (vanilla) roms will definitely need a wipe
Its always best to take a nandroid backup of your existing rom. See the Nandroid section further on in this FAQ.
Also you should backup your apps and data. Titanium Backup is a great app for this. However, I also use mybackup pro for sms and call logs, but there are alternatives out there.
If you have to wipe, this is due to an incompatibility with system settings from your old rom. See the wiping section, also further on in this FAQ.
So (based on clockworkmod recovery):
1) download you chosen ROM onto SD card
2) Do all your backups
3) Boot into recovery manually (see recovery section earlier)
4) Choose "wipe data / factory reset"
5) Choose "Install zip from SD card"
6) Once complete, choose "reboot system now"
It can take 10 minutes to boot up first time, so give it this long before taking further action. If it still has not booted, pull out the battery, but ONLY when the boot animation is on. NEVER during a flashing process.
If you can obviously see the boot animation looping, this may be due to the lack of wipe. Pull the battery and boot into recovery and perform the wipe.
Once booted, if you wiped, set up the phone with network and market access and download Titanium again and whatever data restore app you used for sms (if desired).
If you wiped, be careful which option you choose to restore. You dont want to restore system settings, so "restore missing apps with data" is a good one to choose.