Currently there are two primary sources of jailbreak and unlock software : the Dev-Team and geohot.
The Dev-Team consists of several iPhone hackers and they have two current jailbreak offerings : Pwnage Tool and redsn0w.
Pwnage Tool is a jailbreak tool that is Mac-only and allows you to create a custom firmware bundle to upgrade, jailbreak, and, if necessary, activate your iPhone. This tool is favored when you want to upgrade your iPhone's firmware to 3.1.x but want to keep your current baseband ( which is what is exploited in order to unlock your iPhone ). This was particularly useful when there was no unlock for the 3.1.x firmware. Pwnage Tool performs other tasks such as pre-installs applications from Cydia and it also allows you to use custom boot logos. Note that Pwnage Tool is a destructive upgrade as it will wipe your iPhone clean : your apps, songs, settings, etc. will be deleted. Make sure that you sync your iPhone via iTunes before using Pwnage Tool.
redsn0w is available for the Mac and Windows and will jailbreak and activate your 3G or 3GS - it is a non-destructive upgrade : all apps, songs, settings, etc. will remain on your iPhone after redsn0w has been run. For the 2G, redsn0w also performs an unlock if you select it. redsn0w is favored when your current firmware can be jailbroken and unlocked and your don't need anything fancy.
ultrasn0w is the Dev-Team's current unlock software. It is installed from Cydia and will unlock iPhones that are on 3.0.x firmware. It will also run on a 3.1.2 iPhone that has been upgraded from 3.0.x to 3.1.x using Pwnage Tool. This is the configuration that my 3GS is currently running on.
geohot is a brilliant individual and provides two jailbreaking software : purplera1n for 3.0 firmware and blackra1n for 3.1.x firmware. Note that he does not provide a jailbreak solution for 3.0.1.
blackra1n is geohot's current jailbreak offering and was hailed as it is a 15 second jailbreak that runs on both Mac and Windows computers and is non-destructive. Many people were waiting for this jailbreak as the Dev-Team's Pwnage Tool is only available for Macs ( although the resulting custom firmware bundle can be used on both Macs and Windows computers ).
geohot's unlock solution that partnered with blackra1n, blacksn0w, has been eagerly waited as there was no unlock for iPhones that were running 3.1.x firmware. I have found that blackra1n works without issue on the 3G iPhone. However, for the 6 3GS iPhones on 3.1.x that I have jailbroken and unlocked I have had WIFI issues : no WIFi until I performed a "Reset Network Settings" and rebooted the 3GS. Afterwards, no problems.
With these offerings from these two groups, the iPhone jailbreaking community is well-taken care of and I give them MANY thanks! Now we just need a solution for the new bootroom that is plaguing iPhone 3GS that were manufactured on and after week 40 of 2009 ... but that's another story.