During a trip to Switzerland I needed some internet connectivity for my laptop and so I got myself a prepaid UMTS SIM card. That's a lot cheaper than roaming with the UMTS card from my local provider. NetworkManager worked great: after putting the SIM card into the laptop a dialog popped up asking for the PIN, then selecting the provider, ready to go!
After I used up my prepaid credit things got a bit more rough. The connection was failing for now "obvious" reason. So I put the SIM card into a mobile phone, pulled out the manual that came with the SIM card, found how to check the balance and dialed:
*130#
and the mobile phone returned that I didn't have enough credit left. So I got myself a top up code from the next supermarket, dialed:
*130*<topupcode>#
put the card back into my laptop and could connect again.
That's a bit cumbersome to repeat since you not only have to know the above USSD sequences (those vary between providers) but also need a mobile phone to put the SIM card into. So I added prelimanary USSD support to ModemManager, extended mobile-broadband-provider to support balance top-up information and hacked together a simple prepaid-manager-applet that allows you to check and top-up your prepaid balance right from your GNOME desktop. This needs more work (and a nice icon) but it's basically usable.