Now, obviously this will require SKSE, as do most wild alterations to the UI. The good thing about this mod is that it will use what I call menu injection, where we access an existing menu then using the exposed Scaleform calls to invoke a loadMovie. Since ActionScript functions can be overridden at runtime you can 'hook' existing functions and completely override a menu. What does this mean? It means there is no need for a menu replacer, it will simply override a particular menu at runtime (In this case the target menu is the DialogueMenu, this will only really work here because this menu is initiated from Dialogue, so the internal menu is already open).
I decided to go with the DialogueMenu because I plan to actually have a barber NPC (I'll need some voice actors for this BTW!).
The idea is that the barber will have his/her own salon in some arbitrary town (Maybe in the middle of nowhere just for laughs) and when you come in they will greet you and inform you if you'd like a haircut to take a seat in their chair. After seated they will move from where ever they are to the chair and then initiate conversation, this is where you'll choose whether to get a haircut or not. If you do, it will start a script, inject the menu and override plain Dialogue to open this: http://i.imgur.com/tp4j5Ok.jpg
Now, because I can't actually load the 3d and faces for all those hairstyles, I have to make thumbnails for every single one. This process takes quite awhile, load my modifed Nifskope set the background to green, load the hairstyle, load the target races face, load the eyes (mouth for Khajiit) then body the branch data onto the main instance (The one with the hair). This will basically have just the head and the hair in one instance of Nifskope, then I export the viewport to a bitmap, load the bitmap in photoshop apply a greenscreen filter to convert the green into transparent, downscale it to 128x128, save as DDS and give it an appropriate name and directory location. I have to repeat this process for every hairstyle (The 20 shown in the image took me about an hour).