The process is actually easier than the process you went through to root your phone and install CM7.
First, download the ICS firmware zip file to your phone's sdcard.
Next, make your backup using TitaniumBackup.
For most ICS firmware, you'll need to repartition your hboot. Google for blackrose-manual_120216.zip, download to your computer, unzip and look for the hboot_brcust-220-10-206.nb0 file. This one is pre-configured with the right partition sizes. Follow the instructions in the README file, which are basically:
Update your recovery firmware, by downloading to your computer and then using fastboot from your computer. I used the Amon-RA recovery for CM and stayed with it for ICS.
On the phone, enable USB Debugging in the CM Developer settings menu.
Boot the phone into the bootloader and go to FastBoot mode. It'll tell you what HBOOT you currently have. Read the instructions in the blackrose README to see which (if any) of the goXX.lol files you need. Then, on the computer:
Code:
fastboot flash recovery goXX.lol
fastboot flash recovery recovery-RA-passion-v2.2.1.img
Next, flash the new hboot:
Code:
fastboot flash hboot hboot_brcust-220-10-206.nb0
The blackrose-manual zip contains fastboot binaries for Linux, Mac and Windows. If you need a fastboot for FreeBSD, send me a PM.
Then boot into recovery, do a Nandroid backup, then a full wipe, then install the ICS firmware zip you put on the sdcard earlier.
That should be all. Once the new system is booted, you'll use Titanium again to restore your apps.
For what it's worth, the BCM firmware is based on CM with all the CM additions you're used to, so things will be pretty familiar. It's running well for me.