Sometimes I'll have a loop that I accidentally made too big. I'll evaluate, and MM will try to run through the entire loop. The program itself doesn't actually seem frozen... I can go to Evaluation-> Abort/Interrupt evaluation, but they don't do anything. I can even save while it's doing this!
What seems to kind of work is saving, closing the file, and then going to Evaluation->Quit kernel.
But that's a little ridiculous. Is there really no 'hard kill'?