In all our apps we almost never allow people to delete regular Users. We do this to keep an audit trail and not have "orphan" records e.g. this client is assigned to [blank] because the user was deleted.
To manage Users we have an Active (Y/N) box on the user record and then at Login we run a process that checks if they are active and if N then displays a message and calls a URL to display the login page again.
This works BUT I think it is a little messy as they do actually log in to the system - they see the visual perspective in the background etc.
I'm just wondering how others manage this process - does anyone have a really neat idea that we haven't thought of?