I'd really like to play with your setup to get a real good idea of what would work best.
In many games that use a gamepad, the settings allow the user to choose from a preset selection of layouts for the joysticks. For example, you could chose to set the right joystick to regular (point up to look up) or inverted (point up to look down) but you couldn't choose to make the right joystick do what the buttons on the right do. The users aren't usually allowed to change them beyond these presets. I think doing it this way will be the easiest for you. For the buttons you can easily give them access to, let the player customize them. For the gamepad and joysticks, have a couple preset options and let the player select which preset they like best.
Not only will this be the easiest customization for you to implement, but for the most part, players are already used to having gamepad options work this way.
Hope my suggestion helps and good luck with your project.