Stop crying about Hamlet being a jerk. Sure that's one way to look at it, but I'm sticking to the historical idea that he is a hero. That's how I read the play. It's not that he's mad, it's not that he's a bad guy, it's that he's human. He deserves justification, and it's not rationalizing to explain why he did things, but rationalizing for those who can't understand him.
He doesn't want to hurt anyone except for Claudius, and unfortunately he drives himself mad by trying to control things and ends up hurting other people. Whatever, other people hurt him and made this happen. Whose fault is it initially? --- Claudius. He started this mess before the play began and the whole upheaval and mess caused in the play is his fault. We just don't see the true beginning to this play and come in in the middle.
In one of my other classes, we have been discussing different motivation theories, and the one that truly applies here to Hamlet's choices and reasoning is the Equity Theory, pertaining to choices made when perceived inequity exists.
Hamlet has been dealt a shitty hand. His mother and father's love was his rock, his stability. He comes home from college and his world is turned over. His father has died and his mother has immediately remarried and it is his uncle, his father's brother, who Hamlet already dislikes. His parent's love has been made a joke by this new marriage, and on top of that, he meets a ghost who tells him his father did not simply die, he was murdered. Claudius is not only the one who murdered his father, but also in doing so, murdered their love and turned it into a public joke. Who wouldn't be driven crazy?
It is arguable that he may have had some mental condition arise from all of this, however let's look at it rationally in the perspective of this motivational theory, which is sincerely applicable to much of human decision. Hamlet has been given all of these troubles, piled on him without having done something to deserve them. He perceives the inequity, and without a legal body to represent him and punish Claudius, correcting this imbalance, he must take it into his own hands.
There is no crime scene investigation, no search to find out what caused his death, and the body is already gone, so Hamlet sets up his own creative investigation by using the play to confirm Claudius' guilt. He could have acted solely on the word of the ghost, which may or may not have truly been his father, but he didn't and that's pretty noble. It's not trying to control everything, it's leading an investigation and making sure that you get the right unaffected, unskewed answer.
Then, when he sees his suspicions confirmed as Claudius jumps up at the play-within-a-play's moment of truth, Hamlet follows the [imposter] king into his chambers and finds him praying asking for forgiveness. No matter whether or not Claudius' prayers are received in heaven, Hamlet cannot take the chance of killing him now. By killing him now when he has the chance for diving mercy and everlasting salvation, the imbalance will not be corrected. Claudius not only murdered Hamlet's father, but also took his mother and corrupted the marriage, and in doing so corrupted Hamlet.
Let the punishment suit the crime. A life for a life is an archetypal punishment, but what is the proper punishment for a life plus a whole lot more? Without beleiving in an afterlife, the only viable punishment would be a whole lot of torture and then execution. However, clearly Hamlet and the rest of the play's characters, as well as Shakespeare's audience, beleive in God and in heaven. While it is ultimately God's decision to determine a person's place in Heaven or in Hell, Hamlet can up Claudius' chances for the latter by killing him in a sinful state.
When noticing that despite the unbeleivably tempting opportunity before him, he would be doing Claudius a service by killing him now, he realizes more injustice in his father's murder. Killing Claudius now would be "hire and salary, not revenge," because Claudius would fly right no up to Heaven. At the time of Hamlet's father's murder, he was "full of bread, with all his crimes broad blown, as flush as May"(III, iii, 83-85). On top of all of the other horrible things, his father was not given this chance to ask God for forgiveness.
Passing up the chance to kill Claudius now is heroic, not insane. Hamlet is trying to get revenge, but the revenge must be worth getting. He is not trying to control too much. He can only kill Claudius once, and is only playing it safe in this scene to ensure that when he does kill him, that it be of the proper condition to correct the imbalance in equity.
I don't think people realize just how rational Hamlet's actions are. His thought process is not erratic. He doesn't act impulsively, he plans so that he can ensure perfection. When he acts on impulse rather than planning, bad things happen, such as his accidental murder of Polonius. This just justifies why he must have everythign figured out. He is not a lucky person, and without luck, one must have all of the cards laid out on the table before betting any chips.
So quit attributing ignorance and misunderstanding to be villainry, saying "people don't do that," because they do. People in extreme situations will think differently than people on the outside looking in. To fully understand and be able to critique, you have to get inside and look out.