I'm not sure if this is what you're doing, but if you loop through all your faces and calculate their normals you can just add each face normal to its component vertices' normals and then go through all the vertices and normalise their normals.

That sounds kinda confusing now that I read through it but should work.

What GL_NORMALIZE really does is it scales all the normals you send with the glNormal commands such that they are 1 unit long (some transformations will change their length). But if you aren't sending normals at all or the normals you send are incorrect, GL_NORMALIZE won't help you.