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
Dial *#5005*7672#
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:
**5005*7672*+3725099000#
This will Display a Message saying Setting Succeeded Service Center Address No Address
Source: http://www.travelsim.net.au/Knowledgebase/View/en-AU/SMS-Message-Center-Number-o n-the-iPhone/