Disclaimer: while the methods and practices described here have been tested by the author, there is no guarantee that it will work with your particular model/make, and I am not to be held responsible for any loss or damage that occurs as a result of following my guides.
The most effective way to jailbreak your phone is to use BlackRa1n. BlackRa1n RC3 will only work on firmware 3.1.2, so you will need to update an older 2G model to 3.1.2 (see steps below).
Download BlackRa1n RC3
Once your iPhone is unlocked, when you install Cydia, go ahead and also install sn0w. You'll need to disable 3G on your phone for it to work. Also it helps to disable Auto-Lock so that all installations proceed without a hitch.
There are two ways to update firmware. The best way to upgrade firmware is to put the iPhone in DFU (Device Firmware Upgrade) mode and to use iTunes to update. This requires a bit of trickery, but the basic premise is to keep your fingers on the Sleep/Wake button and the Home button and release the Sleep/Wake when the screen goes dark (ignoring the "Slide to Power off"). Only release the Home button when your iTunes recognizes it as being in DFU mode.
The other way is to use QuickPwn and the Baseband/IPSW restore files from Apple, but I've had mixed success with that.
ipa files are iPhone application files that can be loaded onto your iPhone.
However, before you can bypass iTunes to load your applications manually, you need a tool called AppSync.
http://cydia.hackulo.us
You can then double click on your ipa files and iTunes will load them. When you sync, just make sure to sync your applications and have that particular application button checked.
Sometimes you might come across iPhones that have a region of the screen that does not respond to touch. This is the infamous "dead strip" and depending on where it is, you may or may not be in luck. For the record, Apple will not replace it if you aren't a AT&T customer, and an out-of-warranty replacement will set you back about $60.
A useful alternative is a hidden "Touch" customizer tool that is part of the settings in iPhone (but hidden from use).
You can access it by changing two files: general.plist and touch.plist, both of which are located in
/var/stash/Applications/Preferences.app/.
Now the funny dilemma is that if you have a dead strip at the bottom of the screen, chances are you won't be able to access the buttons to download the tools to transfer these files to your iPhone. If you use Cydia, that will be the case. You can use Rock, however, to install the necessary SSH tools (see steps below) because Rock allows you to change your view to a "Landscape" mode, so the bottom buttons become accessible when you rotate the screen.
This took a while for me to get, but it's really simple.
Things you'll need:
First, determine your iPhone's IP address. This is usually a local area network's assigned IP, so it should start with 192.168. If you go to "Settings" » "Wi-Fi" and click on the blue right arrow next to the wireless network you're currently connected to, you'll see it there. (Usually the button selected will be "DHCP", rather than "Static")
Also important is to turn off your AutoLock feature (set it to "Never") so that your iPhone doesn't end up refusing the request to connect if it shuts off.
Install OpenSSH, and make sure it is installed.
Using WinSCP, type into the Host area the IP address you just retrieved. For username: write "root". For password, write "alpine", the default password for jailbroken iPhones. Change this whenever you can using MobileTerminal (see below).
A good idea before attempting to connect is to change the timeout settings to some number above 15 seconds. Usually it takes a little more time to connect than that, but sometimes it works.
If you don't want to have your iPhone compromised like the way it occurred last year, you definitely want to change your root password. In order to do that you need MobileTerminal or something similar.
Install it via Cydia.
Open it up, and type:
suit will ask you for your password. At this point it should still be "alpine".
Type in:
passwdand it will ask you for a new password. Retype it and you're done!.
Once in a while you'll come across .deb packages that can be used to install apps on your iPhone. A good way to do that is using MobileTerminal. SSH into your iPhone and put the deb file wherever you want.
Open MobileTerminal and type:
suand then your password.
Then type
dpkg -i /your/file.deb
Most likely you'll have to respring your iPhone in order for the icon to show up on the "Pages". You can use a Cydia app like BossPrefs for that, or you can just reboot the unit.
Pretty simple. Press and hold both the Sleep/Wake button and the Home button at the same time. Let go when the Apple logo comes up.
If you're like me and a cheapskate you don't want to pay for data transfer. A tried and tested way is to use a fake APN (Access Point Name) that will fool your iPhone into thinking it's going to connect to an data network.

Unlockit.co.nz operates a really nifty tool to do so. From your iPhone, go to:
http://unlockit.co.nz
From there, follow the instructions. The web app will automatically configure your APN with bogus data. If you want to fill out the fake info yourself, just enter bogus data in the APN, Username and Password sections of your "Cellular Data" settings panel.
If you're ever in the position of having to gain access to a device that a) no longer can be connected to its original iTunes and b) cannot be accessed without the appropriate passcode, then you'll have to restore the device from its new host machine.
To do that, follow the instructions for entering Recovery Mode (see below)
Note this is not the same as going into Device Firmware Upgrade (DFU) mode so be sure you know which one you're supposed to be in!

Open iTunes, and have the one side of the USB connector connected to your PC.
Power off the iPhone by holding the Sleep/Wake button and then using the slider when it comes on.
While holding the Home button, connect the other end of the connector cable to the USB. Keep on holding until iTunes and your new PC recognizes it as being in recovery mode.