It's not stated anywhere in the movie or on the internet why she kept that diamond for long.
Why she kept the diamond this long with her, even when she never used it during her bad days.
She could, but it wouldn't be very easy.
Right before old Rose starts to tell the story, Brock Lovett says that a claim was made against insurance for the loss of the diamond by Nathan Hartley, Cal's father. Now since that insurance company paid for it, it is the legal owner of the diamond. If she did donate it or sell it, it would automatically be subject to claim by that insurance company.
Why did she keep the reminder of Cal this long?
Well, this diamond is not the reminder of Cal only. It is also reminder of Jack. She got her portrait drawn wearing the Heart of the Ocean. It is the only thing that reminds her of Jack. So, this could be the reason why she kept that diamond for long.