The Messages app on the iPhone is alright if you're using it like a one-window chat system, but once you start doing other things on your phone, constant popups you can't do anything with are a source of extreme frustration.
BiteSMS is a good way to solve this problem (if you've jailbroken your iPhone). There's a pretty large list of things you can do with biteSMS, but the above video shows off my favorites. The absolute best are quick reply and quick compose, which let you bring up a little popup no matter where you are and send messages directly from there—no app swapping necessary—as well as being able to see messages and reply. You can even see the last few messages of your conversation by dragging down the scroll bar in the quick message view.
Other cool stuff! Delivery reports, quick smilies, access to your favorites, autocomplete, credit counter (if you only have 200 or 1500 messages per month), forwarding, templates, scheduling and privacy lock.
It's not free, unfortunately, so you'll have to pay the $9 for the privilege of upgrading your SMSing. BiteSMS also offers SMS credits to pipe your texts through their system, in case you do a lot of international texting. Rates aren't cheap—$6 for 50, $12 for 105, $120 for 1200—but they beat your standard carrier rates for overseas SMS.
Again, this is a jailbreak app, so if you're only kinda into jailbreaking, be aware that you'll only be able to run this as long as you have a jailbreak. Meaning, if you're anxious to update to a new version of iOS that doesn't have jailbreak yet, you'll lose biteSMS. There's a 15 day free trial for you to play around with to see if you like it. [biteSMS]
Update: Two additional things to mention. One, as commenters pointed out, biteSMS is free after the 15 day trial period if you can stand the ads inside the app itself. If you only use quick reply and quick compose, you'll never see them.
The second is that someone pointed out a bug where if you get a text during a call, it causes his phone to crash. Or if you have an alarm set and you get a text, you won't be able to shut off the alarm. This might be a general bug or specific to him—I have no idea.
Update 2: Oh, and custom SMS tones! Thanks gankit.