This is my preferred method for flashing the phone for USCC, I think this should actually replace the original posting as it's more accurate and up to date. And so far has never failed after flashing 10+ phones.
The very first thing you should do is download QPST and use it to read the programming off of your phone.
To get your MSL/SPC do a google search for BAFMSL, make sure you have .net 3.5 installed on your phone and it will give you your MSL/SPC. I believe this works on all carriers, where GetSPC only works on Sprint and a few other carriers. If you can't get this to work, there is a registry hack that will create a temp file that shows your SPC as well. It's just more complicated.
You will need this to read your phone's programming with QPST and save the information to a file. (You will need this later, do not skip this step).
Next, I recommend using the SPL2.47 bootloader as it can be done from the phone and doesn't require activesync (to me it's easier, faster, and safer). And also recommended as it supposedly makes the phone faster and more stable.
Once this is put on to the phone, then use any radio newer than 3.27.x, I personally use the latest from DCD. Once this is done, then download DCD 3.1.2 rom (this will be replaced later, just need it to run QPST again).
I do all of my flashing from the bootloader screen, as it's faster and easier to get to. You need a 2gb or smaller MicroSD card and SPL2.47 will format it for you to the correct format.
Once 3.1.2 is on the phone, rerun QPST and write your programming back to the phone (You did save it after reading it, right)
Reboot the phone.
It will come up and say Cell South (This is fine, dial *22
and let it do a PRL update, it will also fix your carrier banner.
Once you are this far, you can then flash any rom you want, DCD, No2Chem, Scrosslers, Etc.
If you guys want to use this as the original post, I will go in and put in more details, etc with links. Just don't want to do all this if it's just going to be overlooked.
BTC