If a distributed lock fails to unlock for some reason ( server connectivity, for example ), the process continues to ping for the lock (so it can't be forced). see CS-541
Assuming mongos is still in a sane state, it should be possible to reacquire distributed locks of the same process and name for singleton threads like the balancer.