Why does Hamlet delay killing Claudius when he was praying?
I think it was because of his morals, his being a coward, and to his confusion about the honesty of his father's ghost, but I'm not sure. I'm doing a paper on it and I needed to make sure.
Hamlet's decision to not kill Claudius isn't due to any of the three reasons you mention.
Morals aren't the cause for the decision, because by that time Hamlet is certain that Claudius is guilty of his father's murder (the play within the play takes care of that), so Claudius deserves to die.
Hamlet isn't a coward. He is an excellent swordsman, as seen during his duel with Laertes, who is reputed to be a great swordsman but is easily out-dueled by Hamlet. And Hamlet doesn't hesitate to act during Act 5 after Laertes wounds him unfairly, or when he becomes aware that Claudius poisoned the cup.
And, since the prayer scene is after the play within the play, Hamlet is certain that Claudius is guilty, and the identity of the Ghost is no longer in question. As Hamlet tells Horatio:
...I'll take the ghost's word for a thousand
pound.... (Act 3.2.266-267)
Strictly speaking, Hamlet's Catholic beliefs suggest that Claudius's soul will be purged after confessing, and Hamlet assumes he is confessing. He's not, but Hamlet doesn't know that. Hamlet assumes he is. Hamlet doesn't hesitate to strike out at the figure behind the arras only a few minutes later when in his mother's chambers. When he discovers that the person he has killed is Polonius, he says "I took thee for thy better" (Act 3.4.33). He thinks it's Claudius spying on him, and he doesn't hesitate to strike. What changed? Claudius is no longer praying, and he is, instead, spying.
This, by the way, is seen by many as the climax of the play. When Hamlet decides not to kill Claudius because he doesn't want to send Claudius to heaven, he is playing God. Salvation is God's business, not Hamlet's. If Hamlet kills Claudius in Act 3.4 while Caudius is praying everyone from Polonius to Gertrude lives; only the guilty party, Claudius, dies. But because he delays here the bloodbath occurs.
Finally, though Hamlet's words demonstrate why he doesn't kill Claudius while the king is at prayer--
Now might I do it pat, now 'a is a-praying,
And now I'll do't--an so'a goes to heaven,
And so am I revenged. That would be scanned.
A villain kills my father, and for that,
I, his sole son, do this same villain send
To heaven. (Act 3.4.73-78)
--there may be more to it. Some commentators see Hamlet as having a need to make what the king has done public; to make sure everyone is aware of what went on and why Claudius must die. In this case, Hamlet doesn't really want to kill Claudius in private. He wants the truth to be known.
Finally, a third possibility exists: Hamlet is better at spontaneous action than he is at action preceded by thought. In other words, he is better at taking action when he doesn't have time to think about it first. If this is true, then Hamlet simply has too much time to think when he catches Claudius at prayer.
Hamlet does not kill his uncle here because he does not want to give him a break. He thinks that killing him right now will not be good revenge. Here's why.
Right then, Claudius is praying and Hamlet figures that his soul will be clean. He figures God will hear Claudius praying and forgive him. He wants to kill Claudius at some time when it is guaranteed that Claudius's soul will go to Hell.
So Hamlet does not think killing Claudius while he prays would be a good revenge because Claudius would end up in Heaven.