Well, since you just want to resize the root partition, and it happens to be the last partition, you got lucky.
Step one: Make a backup
Step two: Make another backup
If you're running kernel 2.6 and the filesystem is ext3 (not 2), you could do this whole process online. I don't think I'd try it, though.
Assuming you want to do it offline, you'll need to boot off a LiveCD so that you can work with the filesystem unmounted. So do that first. If you want to push the envelope, just don't.
The next thing you need to do is make the partition bigger. Unfortunately, fdisk doesn't give you the option to modify existing partition entries, so you'll have to delete partition 3 and recreate it with the same values as before except for the length/end, which you want to modify to make the partition take up the remainder of the disk. Don't worry about deleting it and recreating it, fdisk will not write the changes until you exit, so there won't be a point when that partition doesn't exist.
Um, this is actually a point where my knowledge breaks down. You may need to do something to make Linux recognize the new partition size. Or you may not. Arg. I'll look around. So let's call this step "magic happens" for now.
Next you want to tell the filesystem that it's got all this new space to play with. You do that using resize2fs, which you should already have on your computer, as it's part of the same package that includes mke2fs. Basically, you should just be able to run "resize2fs /dev/hda3" and it should see the new space and fix the filesystem to use it.
That it. You're done. Not too bad, except for the "magic happens" step. I'll get back to you on that.