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.