Twilio
Today I finished porting my Google Voice number to Twilio. They offer a great platform on which to build telephony apps. I've been very impressed with their customer support too. It's refreshing to be able to discuss telephony problems with your provider. That was never possible with Google Voice.They offer phone numbers in every country we plan to live. They provide numerous telephony services, but we're only using a few right now.
SMS
I selfhost an XMPP server for my family. We use it all the time for messaging each other. We run Conversations on mobile and use other XMPP clients on desktop. It works great. I wrote a gateway between XMPP and SMS. You send an XMPP message and it converts it into an SMS. When someone sends me an SMS, it converts it into an XMPP message.
This all works through Twilio's SMS API. Since the whole system is under my control, I can add arbitrary logic for handling SMS.
Voice
To replace the voice component of Google Voice, I set up an Asterisk instance. I use Twilio SIP trunking to connect to the telephone network. I run Zoiper on my Android phone. To make an outgoing call, I use the Zoiper dialer and Asterisk routes the SIP call through Twilio to the public telephone network. When someone calls my Twilio number, Asterisk routes the call to Zoiper on my Android device. The call quality is great.I have no previous experience with PBX systems, but it was all surprisingly easy to configure. Once again, since it's all in my control, I can add whatever features I want.
Future
For now I'm using a very basic setup. SMS accounts for 90% of my Google Voice usage and that part works really well. Even if I never had more than this, I think I'd be content. I have a bunch of features in mind and this setup makes it really easy to add them as I need them.