I use SIP Softphone on the iPhone (search on iTunes) - it is absolutely fantastic. You need to set up with a SIP provider, which sounds harder than it is - they have templates for most the popular ones inside the app, but one big plus with it is that it has push for incoming calls.
You can be in another app and it will pop up a "Incoming call from..." and you can click the pop-up and it will drop you right into the SIP phone and answer the call.
I have a SIP account set up at home and also linked my iPhone, so my iPhone will ring any time my home phone rings, anywhere in the world, even if it isn't in the foreground.
Of all the SIP phone applications on the iPhone, I've bought/tried them all and this is the best, hands-down.