I have an iPhone 5s bought on AT&T and had it unlocked and been using it in the UK on EE in October 2014 and then tried to use it in Bangladesh on Grameen in November 2014. I had no issues on EE while in the UK to activate iMessage, it worked instantly. With Grameen I was charged for international SMS's but the activation was stuck with an error - it wouldn't even show my number in Bangladesh under Settings > Messages > Send & Receive.
What finally worked: Resetting SMS Service Center Number on iPhone.
Note: Even if after you query the existing SMS Service Center Number you see the correct number (according to your carrier) appear, please follow the instructions to reset/re-enter the number (below), and then try restarting your phone and then activating iMessage and Facetime. They should work at this point pretty quickly.
How to do it:
Go to the Phone Application (where you would make a call) and
This will display:
Setting Interrogation Succeeded Service Center Address +3725099000 (where +3725099000 happens to be the SMS Service Center Number of this example carrier - please find out from your Telco/Carrier what their specific number is).
If it is not correct, there is a code to change it.
To change the SMSC please dial:
This will Display a Message saying Setting Succeeded Service Center Address No Address
I'm sorry that you're still having issues.
Here is a step-by-step video tutorial on How to fix most iMessage activation issues (iOS 8.1.2):
Let me know if this solves your issue. If you have any additional questions, please feel free to contact me.