Hi
I have a cloak with a hood that does this, the hood can be up over my head or down like a hoodie. by wearing both attachments and using a show hide script in them which will alpha one and de-alpha the other. this will give the allusion of changing helmuts gear etc. This is also used in guns and lightsabers that go from your belt to your hand.
the script I am posting is set up a lil differently it is for touching one prim to make another alpha, but from this you can see how the script is set up and either modify it to your needs or maybe some one else has such a script. You might also search script library for a show/hide script.
effectively you could make two copies of the alpha script and switch the lines:
appear()
{
llSetAlpha(1, ALL_SIDES); (for second script change "1" to "0"

}
disappear()
{
llSetAlpha(0, ALL_SIDES); (for second script change "0" to "1"

}
and then put one of each copy in the two helmuts and have another prim to touch with the toggle script in that and that should do what you are looking for.
anyhow hope this helps you and good luck!
alpha script
init()
{
llListen(69, "", "", "");
llSetAlpha(1, ALL_SIDES);
}
appear()
{
llSetAlpha(1, ALL_SIDES);
}
disappear()
{
llSetAlpha(0, ALL_SIDES);
}
default
{
state_entry()
{
init();
}
on_rez(integer start_param)
{
init();
}
attach(key attached)
{
init();
}
listen(integer chan, string name, key id, string msg)
{
if(llGetOwnerKey(id) == llGetOwner())
{
if(llToLower(msg) == "on")
{
disappear();
}
if(llToLower(msg) == "off")
{
appear();
}
}
}
}
and the toggle switch
integer on = 1;
default {
touch_start(integer n) {
if(on)
llSay(69, "on");
else
llSay(69, "off");
on = !on;
}
}