"For keeps" has its origins in children's games in which the loser forfeits something to the winner. (If you're playing marbles "for keeps," the winner will go home with whatever marbles he has won; if not, they'll be returned to the loser at the end of the game.) Outside of this literal meaning, "playing for keeps" is often used to convey that someone is doing something in earnest or with serious intent – that he is not just playing around.
"For good" is not quite as colloquial and has a broader meaning. It can be used as a synonym for "permanently" in many cases where "for keeps" would not work. (E.g., "After decades of spending part of his time England and part of it in the U.S., he has finally gone back to England for good.")