The simple answer is that as a result of the play-within-the-play, Hamlet has definite proof of his uncle's guilt. He comes upon Clausius alone, and it would seem logical that the only thing that keeps Hamlet from killing him then and there is his scruple about sending Claudius to his Maker when (so Hamlet assumes) he is making his confession. This makes Hamlet appear hideously vengeful - as evil an executioner as Claudius was a murderer. Nor is Hamlet afraid to act; look at the vigor with which he skewers poor Polonius. The real reason probably lies with the playwright's attempt. Hamlet is not ready to die himself, and needs to have achieved a full understanding of who he is before he can truly fulfill his tragic role. This does not happen until the last act.
A good question, and one that has bothered audiences since the play first appeared. I'd have to say he is infected with the disease of rationalism. That is to say, he's a college boy. He likes to study, and is interested in rational explanation and evidence. Though the ghost looks like his father, Hamlet wanted evidence to confirm Claudius' guilt. Once he has it, he wants to not kill him at a time that sends him to heaven (when he's praying). At that point, though, the need for reasons becomes waffling. He's scared to act, plain and simple.
One of the reasons Hamlet finds revenge difficult, is because he doesn’t have the opportunity to. Other than the scene where he finds Claudius praying, Claudius does a good job of keeping Hamlet watched. Claudius plays on the fact that they are his school friends and will be concerned to hear ‘Of Hamlet’s transformation; so call it…’In this way he gets them to watch Hamlet and report on what ’afflicts him thus’. Due to this fact Hamlet finds the task of revenge very difficult because he has little or no opportunity to perform the deed alone. At other times, Hamlet is pestered by Polonius and although this makes for a very humorous encounter in which Hamlet shows how he can “play” Polonius by creating a slightly insane disposition, it holds Hamlet up from doing is duty of vengeance for his father. Hamlet looses his sense of purpose at the end of Act III Scene V, in which he his alone with his mother, Gertrude. In this scene Hamlet finds his task particularly difficult due to the fact that he looses his temper with his mother. Most of his attacks are justified, such as when Hamlet refers to her swift marriage to his uncle, ‘Such an act… Calls virtue hypocrite… and makes… sweet religion a rhapsody.’ She did indeed marry Claudius very quickly after the death of her husband, leading us to believe that she wants to retain the power of Queen. Yet Hamlet looses sight of his purpose, and after tasting blood following the death of Polonius, he calls his mother ‘A murderer and a villain’ prompting a visitation from the ghost to ‘whet thy almost blunted purpose.’ From hamlets point of view there are plenty of villains within Elsinore besides Claudius, and he looses sight of his real task trying to address this.