There are several excellent apps that can connect to a generic SIP service like
http://www.voip.ms (my choice) or CallCentric.
You can always try more than one! For example, right now I have about four on my iPhone.
The one I like best, and the one I've installed on my family's other iPhones and iPad, is the free Whistle Phone:
http://itunes.apple.com/us/app/whistle-phone/id322326573?mt=8 ...Whistle also offers excellent Mac and Windows VOIP clients.
http://whistlephone.com/
There are several paid apps that I'm sure are even better, but so far I haven't had the urge to upgrade. Maybe someday... I'm still early in my usage of VOIP, and Whistle suits my needs ideally right now.
Whistle offers its own VOIP service, like Fring and Truphone, but I prefer the rich feature set, vanishingly low cost and superb performance of a good, non-proprietary, dedicated VOIP service that I can access from a variety of devices. Setting up Whistle's app and desktop clients to use a generic VOIP service is very simple. When you run the software for the first time, it will give you the option of starting up a new Whistle account, or configuring it to use a generic SIP connection. That's the one you want. Give it your VOIP account number (or, in voip.ms's case, subaccount number-- read on) and point it at the server address. (voip.ms has many servers to choose from in North America; pick the one closest to you geographically for lowest latencies. By comparison, Fring routes all its traffic through its servers in Ireland, meaning latencies can be nasty.)
Done.
Whistle Phone works great with voip.ms. It gives me two lines, and I can conference them together. Voice quality is really superb. I have all my voip.ms sub-accounts set to use the highest-quality codecs (ulaw and G.729), so voice quality is indistinguishable from a landline for both me and my recipients. If I were bandwidth limited there is also a GSM codec option. So far that has not been needed-- my home WiFi router and connection are fast and stable.
http://myspeed.visualware.com/indexvoip.php is a very good tool to use for evaluating your connection for VOIP usage. In particular, some routers are not-so-good for VOIP. You want one with a good quality-of-service (QoS) engine and a VOIP-aware firewall. You might want to experiment with turning your router's "SIP ALG" (Application Layer Gateway) on or off too. The Whistle Phone people give great service if you have questions, too. A quality operation.
(On voip.ms, one can have any number of sub-accounts; they're free, and let you dedicate a virtual "extension" to a specific device... so I have a sub-account for each of the family's four iPhones, for my wife's iPad, for the home's Linksys/Cisco PAP2T-NA analog telephone adaptor, and for my MacBook Pro; each can be dialed separately as if they were extensions in an office. Each can also have its own Caller ID and individual mailbox, automated attendant, etc.-- no charge! You can even instantly order and provision a dedicated dial-in number just about anywhere in the world and assign it to one or more of the subaccounts; this can, for example, give your callers a local number in another country which will ring you wherever you are. Cost is pennies per month. You can quickly go crazy with all the features voip.ms offers! There's a bit of a learning curve, as the many options and even more acronyms are daunting to confront at first, but you'll learn quickly, and Google is your friend.)
Recommended. Highly.