Like everyone else, we use django-regsitration a lot. Here in your code, http://bitbucket.org/ubernostrum/django-registration/src/tip... you send a custom signal. Now any one can break the normal flow of control and call control _from any where in the project to anywhere in the project_.
You're not "stealing" control from the loop. Rather, think of it more as listening and attaching something to an event.
For me, it helps to think of signals less as interrupts in a traditional program loop, but as something more akin to events in event-driven environments.
break the normal flow of control
It isn't that code can jump to an arbitrary point in the program (a function call can do that) but that the code after that point won't get called, barring a corresponding GOTO back to the label.