I've been in the initial phases of thinking about this exact problem, for a project I'm thinking about taking on. I also think we'd need a general approach to this in order for Solarus to successfully branch out to more traditional RPGs.
I agree that #2 seems like the best option, possibly combined with #3 for palette swaps. That option is actually similar to the philosophy behind the Universal LPC Character Generator Project (
http://gaurav.munjal.us/Universal-LPC-Spritesheet-Character-Generator). This uses a base character sprite and then simply layers each of the armor/weapon components on top at a set location (based on the location of the armor/weapon sprite sheet relative to the character sprite sheet, so transparent pixels like llamazing said).
If you're able to combine #2 and #3, the number of sprite sheets required wouldn't be too bad. You'd need a base sprite sheet for each "race" appearance (like the LPC project has Orcs, Skeletons, and the rest are human-like) which you could color-swap with shaders. Then you'd need a sprite sheet for each armor and weapon type, but those could be applied to any of the base sprite sheets for a large number of combinations. These could also be color swaps with shaders if needed.