A couple of suggestions, Colette. One, buy a swimming cap. They are once again in style, and most of the Olympic swimmers wear them. You can get one (for about $4) in any sporting goods store. Let him put it on and tuck all his hair in. As he gets less anxious, you can even pour a little water on it to reassure him he won't get his hair wet. You might end up with a little ring of dirt around the hairline, but the towel will probably rub that off. Maybe a simple shower cap would do just as well. Two, let him wear one of your caps—a good one that he knows you don't want to get wet. And, though you didn't mention a negative reaction to the shampoo, make certain you only use a brand that doesn't sting the eyes.
Washing the hair every day has become a fetish in America, but there is little if any evidence that it is necessary or even helpful. (We could probably say the same thing about bathing—our skin, germ count notwithstanding, would surely appreciate it if we bathed less often.) Reassure him you will wash his hair only for very special occasions. And I don't know but what I'd skip a few baths—and use the time for reading a bedtime story instead.
I have to confess, Colette, that I've never tried the suggestions I am offering you. That is because I never had this problem with my children, and no parent has ever brought this up before. But I can appreciate your concern that your son might actually hurt himself while fighting the tub. Keep trying different things, and you will find one that works. And may I offer one final suggestion: ask your son for advice. He just may come up with a great idea.
Our parenting advice is given as suggestions only. We recommend you also consult your healthcare provider, and urge you to contact them immediately if your question is urgent or about a medical condition.