Using grande with respect to hair is perfectly fine. That comprido and longo are more specific when talking about length is no objection: you don’t determine correctness in language the way you derive a theorem from axioms in Mathematics. In language usage is key. And that you don’t use big for hair just shows that there isn’t a one-to-one correspondence between the usages of big and grande; nor would there have to be one. And if you want authority’s backup, here is grande in Aulete:
3 Comprido, longo (cabelos grandes)
The same does not go for pequeno. The opposite of cabelo grande/comprido/longo is cabelo curto, not cabelo pequeno—it’s just the way people speak. Cabelo longo and cabelo comprido are synonyms, but in Portugal you don’t much hear longo with respect to hair in general conversation.
Now from my experience in Portugal there’s considerable overlap between the usage of comprido and grande with respect to hair, but they’re not fully interchangeable. If a woman has hair coming down her back, people are a lot more likely to say mulher de cabelo comprido rather than mulher de cabelo grande; the same for a man with hair coming to his shoulders—comprido is a relative thing. You’re more likely to use grande of a typical, shortish, man or boy’s hair when his hair is longer than his usual or you think he needs a haircut, as in the OP’s example sentence:
O meu cabelo está a ficar grande
Now, one reason language is not like Maths, is that language is a lot more complex and a lot more intuitive. This means that something you’ve been saying your whole life may not make much sense when you think about it for the first time, but there might actually be some sense in it. Cabelo, as hair in English, can mean an individual hair or the whole mass of hair on your scalp. Now how would you measure the length of a typical man’s mass of hair? From the forehead to the back of the neck? Clearly it is not the length of individual hairs. So maybe this is why people first started to use grande when talking of a typical man’s (mass of) hair, but tend to use comprido when talking about hair coming down to the shoulders, when length becomes a more obvious feature.