@Alex, my guess is that there might be some hastily configured "Call-Cost notification system" involved. 

Probably, after making a call, the system triggers a USSD message to your handset while using a different encoding format from the one your handset understands - hence the message does not display on your handset. As a result, your handset is technically in an active USSD session that is later torn down after the session limit lapses.

I bet that if you can reboot your phone quick enough when experiencing this, then the USSD service will be accessible almost immediately.

Tony.