Make a folder called "Pwnage" on the desktop. In it, you will need a couple of things. PwnageTool 4.2, found here or here.
You will also need the 4.2.1 iPhone firmware.
4.2.1 (3GS): iPhone2,1_4.2.1_8C148a_Restore.ipsw
When downloading the IPSW file, it is best to download it with Firefox since Safari often auto extracts it!
Double click to mount PwnageTool then drag the PwnageTool icon into the Pwnage folder.
Then from the Pwnage folder double click to launch the PwnageTool application.
Click Ok if presented with a warning.
Click to select Expert Mode from the top menu bar
Click to select your device. A check-mark will appear over the image of the device. Click the blue arrow button to continue.
You will be brought to the "Browse for IPSW" page. Click the Browse for IPSW... button.
From the popup window select your firmware from the Pwnage folder then click the Open button.
You will then be brought to a menu with several choices. Click to select General then click the blue arrow button.
The General settings allows you to decide the partition size. Check Activate the phone if you are not with an official carrier then click the blue arrow button.
NOTE*: Deselect Activate if you have an iPhone legitimately activated on an official carrier.
The Cydia settings menu allows you to create custom packages so you do not have to manually install the necessary them later.
Click to select the Download packages tab. Then click the Refresh button to display all the available packages. Double clicking the package you want will download it and make it available in the Select Packages tab.
Checkmark the ones you want then click the blue arrow button.
The Custom Packages Settings menu displays listed package settings for your custom IPSW. For know leave these settings as is. Click the blue arrow button to continue.
You are now ready to begin the pwnage process! Click the Build button to select it then click the Blue arrow button to begin.
You will be asked to save your custom .ipsw file. Save it to your Pwnage folder you created on your Desktop.
Your IPSW is now being built. Please allow up to 10 minutes.
You will be asked to enter your administrator password. Do this then click the OK button.
Once your ipsw has been built you will be asked to connect your iPhone to the computer. Once it detects your device PwnageTool will guide your through the steps to putting your iPhone into DFU mode.
Press and hold the power and home buttons for 10 seconds.
Then release the power button and continue holding the home button for 10 seconds.
Once your iPhone is successfully in DFU mode, PwnageTool will prompt you to launch iTunes.
Once In iTunes, hold the Alt/Option key and click Restore.
Navigate to the Pwnage folder on your desktop using the dialog window that appears. Select the custom IPSW that was created and click the Choose button.
iTunes will now restore the firmware on your iPhone. This can also take up to 10 minutes. Once done you will be rebooted into jailbroken iOS 4.2.1!
***THANKS: Thank you to Geohot and the Dev-Teams for their hard work in making this jailbreak and tutorial possible!