I am unsure there is a topic yet about this but i thought i would share my success story.

I had tried to download a package from Cydia not to long ago and got completely frozen on the reboot screen ( the apple logo with the loading cirlce) and had tried everything in the world to get to reboot and restore, nothing was working. Finally i just had to do it and upgrade my phone to the new 4.0 software.

It was iPhone 3GS running 3.1.2 with 05.11.07 baseband unlocked and jailbroken for tmobile.
Now after i had to upgrade to not have a brick it is iPhone 3GS running 4.0 with baseband 05.13.04

Still waiting for the 4.0 jailbreak and unlock ( legit from Dev-Team ) i grew impatient.

I have no idea when i saved SHSH blobs for when i was running on 3.1.2. I remember it always automatically saved it when i opened Cydia at the top of the home screen in green ( never thought twice ).

I opened Tiny Umbrella and ran to see if there were SHSH blobs saved. There was. So Tiny Umbrella informed me that i could successfully restore to 3.1.2. Excellent.

When you open TIny Umbrella select Advanced options> select your previous firmware that you were jailbroken on and click save SHSH.

Then i used PwnageTool3.1.4 and made my custom firmware restore 3.1.2.

Open iTunes and do your shift>restore and select your new custom firmware you created and all should work for you.

Blackra1n failed for me. It had installed Cydia yet Cydia crashed as soon as i opened it.
Resn0w 0.93 failed for me because it would tether jailbreak it meaning it would need to be plugged in once shut off. ( a hastle )

Note that you do also have to place sauriks host site in your hosts or whatever it is.

Tiny Umbrella is an excellent application.