There are several reasons for Hamlet's indecisiveness.
To understand the complexity of Hamlet, it is necessary to understand the world of the play, Hamlet's world which is Roman Catholic. It is also a world where he is obligated (much like Orestes) to avenge his father's murder.
He is told about the murder by the ghost of his father. The question for Hamlet is, is it really his father or the devil tempting him into committing a mortal sin, and thus condemning himself to hell? Before Hamlet avenges his father's death, he must be certain that what he was told is the truth. Until he is certain, he must wait.
When he comes upon Claudius in prayer (or so he thinks) he cannot kill him since this would send his soul to heaven. Hamlet also knows that once he does kill Claudius he has sealed hs own fate. Hamlet must wait and find a way of doing what society demanded, avenging his father's death and not lose his own soul in the process. I would think that would make anybody think twice.