I really like this tutorial:
http://forum.androidcentral.com/opt...ing-larger-sd-cards-no-more-storage-woes.html
It uses Link2SD instead of data2ext or some of the other methods. The thing I liked about Link2SD is that it only links user apps, not system apps. The benefit there is that if you SD card dies or isn't in your phone, you phone will still start up normally and all the vital (to me at least) functions like call, text, etc. will still work fine.
Link2SD can also use FAT partitions if you don't have a ROM with ext support (not sure if data2ext can or not, I am on Rodimus so I just created an ext3 partition and it wasn't an issue).
I found the guide easy to follow and it works well. A couple of tips I have picked up since then:
1. A lot of the Google apps can be uninstalled (may need root uninstaller if they were pre-installed as system apps on your rom) and then reinstalled from the market. This will allow Link2SD to move them since they won't be system apps anymore (a big example is the Maps app).
2. Don't use the "Move to SD" built into Andriod, use the Link2SD instead. I was really low on internal space on my phone as well when I started, so I had to, at first, move everything not already on the SD card (android way) with Link2SD, then a few apps at a time I moved back to the phone, then linked with Link2SD. Eventually I got them all over.
3. Link2SD has an option to autolink things when you install them. I highly recommend it.
4. The space increase created by Link2SD often won't show up until you reboot. After you link a bunch of stuff, reboot your phone an you should see it.
With all this, I have been able to stay around 85-90 MB free on internal memory. I have a 1 GB partition on my SD card for apps that I am using 305 MB of, and then I have the rest of my sd card (7 GB) for everything else.