if hes legitimately not getting services and is roaming more than 50% of the time, it is grounds for cancellation. they will probably try to cancel it if thats the case.. but if hes actually not getting service but on T-Mobile's end they show hes getting service, they are going to blame it on the technology and have a million and one reasons why its not their fault.. basically, its pretty tough to get out of a contract nowadays with the technology as is. I am actually in the same boat with sprint and looking vigorously on how to get out. interested to see other people chime in with advice.
hope this helps.