Edit: Ninja'd by Ellie
What i did was extract the GRF (depending on what 'headgear' you're gonna replace), in my case i replaced red glasses with my own sprite. Red glasses is an official item so its located in the data.grf, however hero custom items are in the hero.grf
You use your grf tool (in my case grf factory) and extract the grf you need to have, and then replace the official file for your file.
Example; red glasses sprite is called ??_??????? (for male) and ??_??????? (for female), replace those sprites and acts by your own named like above and go into game to a char who holds the replaced item.
However i'm gonna test if just making the map names and then place the sprites named after stuff will work too instead of extracting the grf cause extracting the whole data.grf gave me issue's with hero's client.
Unless you wanna test that yourself the maps are named as followed, locate your hero folder either look for or make the following maps:
1. data
2. sprite
3. ?????
4. ?? (for female sprites) or ?? (for male sprites)
Then place your sprites named after an original sprite maybe you can see them in game, i have not tested this myself yet this way, i only did it with extracting the whole grf but that gave me alot of issue's with hairstyles/colors/palettes and custom items.