It is grammatically correct to say a guy has "blond hair". The word blond is the masculine form of the word. AP Stylebook claims that blond is much more common in American English & blonde is more common in British English.