One reason Hamlet takes so long may be that the opportunity has not yet arisen for him to kill Claudius before the scene in Act III.iii when Claudius seems to be praying. At that point, Hamlet refuses to kill Claudius because Claudius's prayer will win him forgiveness, and Hamlet wants him to have a worthy punishment for his father's murder.
One reason Hamlet takes so long may be that the opportunity has not yet arisen for him to kill Claudius before the scene in Act III. When Claudius seems to be praying. At that point, Hamlet refuses to kill Claudius because Claudius's prayer will win him forgiveness, and Hamlet wants him to have a worthy punishment for his father's murder.