Hamlet does seem to procrastinate in accomplishing the assassination he is pledged to perform. He himself wonders why, wonders what is wrong with him in his soliloquy in Act II, Scene 2.
It is the arrival of the players and the speech about the fall of Troy that prompts Hamlet to berate himself for not being able to get mad enough to kill Claudius directly. But the arrival of the players also gives him the idea of putting on the play that will test Claudius to see whether he is in fact guilty of murdering Hamlet's father or whether the ghost was really the devil in disguise tempting Hamlet to commit a mortal sin.
Throughout the play it is circumstances that prevent Hamlet from acting and also motivate him to act. After being convinced of Claudius' guilt by his reaction to the play called "The Murder of Gonzago," Hamlet is at last determined to kill the guilty king. But he kills Polonius by accident and is sent off forthwith to England. On the voyage he gets further proof of Claudius' villainy. The king has sent a letter with Rosencrantz and Guildenstern asking the English to execute Hamlet as soon as he arrives.
So Hamlet is prevented from acting against Claudius and at the same time more strongly motivated to do so. He never gets to England because of being attacked by pirates and held for ransom. When he gets back to Denmark, he is finally and definitely determined to kill the king. Actually he is forced to act quickly because Claudius will soon find out that Hamlet substituted a forged letter for the one being carried by Rosencrantz and Guildenstern. It is these two erstwhile friends who will be executed when they reach England. Claudius is already conspiring with Laertes to kill Hamlet in a rigged fencing bout. He wants Hamlet dead, and if he hears about Hamlet forging the letter in his name, he could simply order Hamlet executed. Hamlet does not realize that the invitation to fence with Laertes is a plot against his life. So the poisoned foil mortally wounds Hamlet but at the same time puts the weapon in his hand wherewith he kills Claudius.
There is only one place in the play when Hamlet has a clear opportunity to murder Claudius. This is where the king is at prayer in Act III, Scene 3. Hamlet says to himself:
Now might I do it pat, now he is praying;
And now I'll do't. And so he goes to heaven,
And so am I revenged. That would be scann'd.
A villain kills my father; and for that,
I, his sole son, do this same villain send
O, this is hire and salary, not revenge!
When Hamlet says, "That would be scanned," he means that killing Claudius while he is at prayer is something that needs further consideration. This is characteristic of Hamlet. He thinks too much, and his habit of thinking prevents him from feeling strong emotion, while the absence of strong emotion prevents him from acting decisively. When he says, "And now I'll do it," this seems to indicate that the actor playing Hamlet would draw his sword.
Shakespeare is playing with his audience. He knows they want to see Claudius killed, but Shakespeare will not give them that satisfaction until the very end of the last act. Here Shakespeare seems to have wanted to remind the audience that Hamlet is wearing a sword, because Hamlet will soon be using it to kill Polonius and frighten Gertrude to the point of hysteria.
Except for the prayer scene in which Hamlet has a good chance to kill Claudius and fails to act, there are plausible reasons why circumstances prevent him from actually murdering the king until the fencing duel in Act V, in which Laertes, Gertrude, Claudius, and Hamlet all die in a violent finale.
The other will sleep in this very excellent bed. On guard, Rainsford." . . .
He had never slept in a better bed, Rainsford decided.