Why can't I say, "I have a brown hair," to describe the colour of my hair?
When describing the hair on one's head, the noun hair takes on a collective sense, i.e. hair is treated as uncountable. Thus, the correct way to describe your hair (presumably that on your head) color is:
I have brown hair.
However, hair is also a countable noun, e.g. "Who knows the number of hairs on their head?" Hence,
I have a brown hair
is also perfectly valid, but it would usually imply that that a particular brown hair is special—perhaps one in a billion black hairs, or something of the sort.
***Normally when you say one's hair you mean not just one but a mass, certainly thousands of hairs in one's head. That's why it should sound more appropriate to use hair as an uncountable noun without indefinite article. you can say: I have brown hair, but if you say I have a brown hair, the reader or listener is more likely to understand that you have one hair which is brown among a mass of black hairs.