Hi Regor,
FYI this thread belongs in the software forum.
So far, so good. I've got a few comments.
1) If you type in paths to roms and mame in the setup program, your program can't find them if there is no closing backslash. The program should be smart enough to detect this.
2) The setup program doesn't minimize and it doesn't go to the background if another window is clicked. This is necessary, for example, if the user needs to download the catver or the controls.ini files.
3) If you cancel the setup app, the FE launches and starts generating the game list. Seems like you would want to have a way to abort the setup more cleanly.
4) It takes a looooong time to generate the game list, and even longer to read the controls.ini.
5) In the drop list to select a key to change categories, add a disable option. Some users, in order to foolproof their cabinets, might want the user not to be able to change game lists.
6) In the setup program, put somewhere that the default button to bring up the settings in the FE is S, the default button to bring up the button layout is B, and the default button to launch is enter. That should lessen the "WTF can't launch a game" factor.
7) Maybe add "are you sure" if the user presses ESC (or other exit button).

For use in some cabinets (ones with certain types of arcade monitors), you'll need to add even lower resolutions than 640x480. My cabinet, for example, runs at something like 368x240.
I personally would love it if a front end provided a single game list for the user rather than one for each emulator. Then, whoever was setting up the FE would set up the games to work best on each emulator. My family members don't care about Daphne, Zinc, or others, they just want a list of games. No front end that I have tried does this.