Make a target_scriptrunner. Give it a -1 count so it can be used infinitely. Copy the following text and make it into an Icarus script with Behaved.
sound ( /*@CHANNELS*/ CHAN_AUTO, "sound/movers/switches/button_09.mp3" );
use ( $get( STRING, "SET_PARM1")$ );
wait ( 2000.000 );
use ( $get( STRING, "SET_PARM1")$ );
Now, you see above how it's looking at parm1 to figure out what exactly to use? Since we didn't make the scriptrunner use on activator, you can simply designate parm1 on that entity(the target_scriptrunner) For example, "parm1" "SwitchName". Obviously you have your two func_usable entities as switches, one with your on texture the other with your off texture. Since you want the Off texture one to be displayed constantly when not in use, give it "targetname" "SwitchName". For the other func_usable with the On switch texture, check the spawnflag box for Star Off. ("spawnflags" "1" I believe) Also give it the targetname "SwitchName". Create a trigger brush over the switch, and target it at the scriptrunner. When the player activates the trigger it hits the scriptrunner, which runs the script. It uses whatever entities are named in parm1, waits 2 seconds and then uses them again. Since one func_usable is on, when used it will disappear. The other one that starts off will appear. After the two seconds the second use will revert the switches back to their original states. Make sense?