Yes, I believe that Hamlet is a good person. He does questionable things, certainly: his treatment of Ophelia is abysmal (though some argue that, in spurning her that he actually protects her from his callous stepfather/uncle); he does arrange for the murder of his old friends, Rosencrantz and Guildenstern ,...
but only because he believes that they were complicit in the king's attempt to haveHamlet killed; he also murders Polonius, but he only does so as a result of his belief that it is his stepfather/uncle, Claudius, behind the arras in his mother's room.
However, when we observe Hamlet's relationship with Horatio, and the great respect he affords his friend, we can gather some evidence of his good character. He clearly loves his friend, and, as he dies, he says,
If thou didst ever hold me in thy heart, Absent thee from felicity awhile And in this harsh world draw thy breath in pain To tell my story. (5.2.381-384)
His absolute trust and faith in his friend, and, likewise, Horatio's devotion to Hamlet—so powerful he considers suicide so as not to be parted from him—helps to paint Hamlet's character as a good one.
Further, Hamlet's apology to Laertes, son of Polonius and brother of Ophelia, is telling of his character. He has quarreled with Laertes over which of them loved Ophelia more, but he knows he is responsible for the death of Laertes' father. Before their duel in the final scene, he says, "Give me your pardon, sir. I have done you wrong" (5.2.240). His request for Laertes' forgiveness helps to show that Hamlet is truly sorry for the hurt that he has caused, helping to show that he is a good person.