NOT A TEACHER
'has not eaten' is incorrect because it is not used for talking about hypothetical past. 'have not eaten' would've been incorrect because the verb 'have' doesn't agree with the singular subject 'Tom'.
Besides, it looks to me like it's either:
If Tom had not eaten so much junk food, he would have been in better health by now.
If Tom had not eaten so much junk food, he would be in better health now.
Interested in Language