What do you mean by 0.5v above its charge level?How are you going to measure the charge level whilst charging?
Lithium-ion batteries are supposed to be charged with a constant current charger.
I can't pass judgement on your circuit without seeing it, and even then I wouldn't give it a seal of approval. I wouldn't trust software to safely do that work. spend the $.50 on the chip!
MAX1811 looks fine, but does not look like 0.50 $
Sometimes you should trust another IC instead of using the arduino itself.Remember that you for some reason make a delay in time, or your IC freezes, or it goes into deep sleep mode, that might be a reason to explode with your battery (because there will be no monitoring).