Acrobits' Softphone costs $8, and it takes just a minute to install. After installation, you have a choice of 4-5 pre-configured free SIP providers to choose from, or set up your own. I usually use Gizmo5, so I used their pre-configured setup, and I only had to enter my username and password. I have my Gizmo5 account setup with Google Voice too, so I can get called-in, and call-out for up to 3 minutes, for free in the US and up to 2 cents per minute when I call in Europe (a true bargain). You can use more than 1 SIP account.
There are 4 main tabs at the bottom of the application, a Quickdial screen, where you can add pictures of your existing iPhone contacts. Then there's the History tab that shows all your calls, but unfortunately there's no way to clear up that screen. The keypad screen is a regular dialing screen. There's an "add contact" in that screen, which in my opinion does not belong there. The Contacts tab instead, loading the actual iPhone contacts list, does not have an "add contact" button.
The Advanced settings for each SIP account include a DTMF mode selection, stun server, proxy server, RTP ports, and the ability to send keep-alives on your NAT server for better compatibility with the home network.
The main preferences page allows you turn on/off call recording, ability to record each of the two parties on the call as a separate file, ability to not let the iPhone sleep (the app dims the screen), and the ability to also show a GsM button in the dialing screen, allowing to use the cell network to call from within the app.
During a call you can mute, use the speakerphone, you can add others to the conversation, hold, and pretty much do everything that the iPhone can do normally in its cell network -- with the addition of recording. There's a switch to in the preferences to set on/off the ability to generate a tone when a call is recorded, as this is illegal in some countries.
Call quality is generally good, but could be better. Unfortunately, it is almost impossible to know if the audio garbling my mother complained about was on her side, Gizmo's side, Google's side, or the app's. So I can only comment in the app's ability to recognize that there's a call for me (it did, my Nokia SIP phones don't always do so), and no call-dropping (it was stable).
The only real complain I have about this app is that the UI needs a bit more work. Remove the background image to something flatter, fix the Contacts page by adding there the "add contact" button, have the ability to clear out the history.
A feature that I did miss is SIP calling. The app can call to another person with his/her SIP address, e.g. sip:eugenia_loli, but unfortunately it does that only for people on the SAME provider. I wanted to call someone at the Ekiga.net provider, but the app wouldn't call outside of the Gizmo network. I hope this is fixed, because without it, it can't be considered a full SIP client.
Finally, this is the kind of app that would shine if it could run in the background -- if it wasn't for Apple's strict rules. I could get 3-4 days of battery life with my Nokia SIP WiFi phone "registered" to the SIP provider 24 hours a day, so I am sure the iPhone can do as well. Users with a jailbroken iPhone can make use of the "Backgrounder" hack that allows apps run in the background, but I would rather see Apple officially relax this rule. And it's only developers like Acrobits that can force Apple to do so.