well the only way i can think of acheiving this is long and probally not efficient but i personally would do somthing like the following (but this is becuase im not efficient enough in JS yet
)
also i have not tested this, i just wrote it out of my head but i hope it gives you a general idea. also with this method it would be hard to implement up and down selections rather than just left and right. You should probally just take this script as an idea and try to create your own 
var P1Selected = true;
var P2Selected = false;
var P3Selected = false;
var t : float = 1.0;
var P1SelectedTexture : Texture;
var P2SelectedTexture : Texture;
var P3SelectedTexture : Texture;
var P1Unselected : Texture;
var P2Unselected : Texture;
var P3Unselected :Texture;
function Start () {
P1Selected = true;
}
function Update () {
if(Input.GetKeyDown ("right") P1Selected) {
P1Selected = false;
P2Selected = true;
P3Selected = false;
}
if(Input.GetKeyDown ("right") P2Selected) {
P1Selected = false;
P2Selected = false;
P3Selected = true;
}
if(Input.GetKeyDown ("right") P3Selected) {
P1Selected = true;
P2Selected = false;
P3Selected= false;
}
}
function OnGUI () {
if(P1Selected) {
GUI.DrawTexture(Rect(10,10,50,50), P1SelectedTexture, ScaleMode.ScaleToFit, true, t);
GUI.DrawTexture(Rect(50,50,50,50),P2Unselected, ScaleMode.ScaleToFit, true, t);
GUI.DrawTexture(Rect(100,100,50,50), P3Unselected, ScaleMode.ScaleToFit, true, t);
}
if(P2Selected) {
GUI.DrawTexture(Rect(10,10,50,50), P1Unselected, ScaleMode.ScaleToFit, true, t);
GUI.DrawTexture(Rect(50,50,50,50),P2SelectedTexture, ScaleMode.ScaleToFit, true, t);
GUI.DrawTexture(Rect(100,100,50,50), P3Unselected, ScaleMode.ScaleToFit, true, t);
}
if(P3Selected) {
GUI.DrawTexture(Rect(10,10,50,50), P1Unselected, ScaleMode.ScaleToFit, true, t);
GUI.DrawTexture(Rect(50,50,50,50),P2Unselected, ScaleMode.ScaleToFit, true, t);
GUI.DrawTexture(Rect(100,100,50,50), P3SelectedTexture, ScaleMode.ScaleToFit, true, t);
}
}
ah see! your method is much better! keep up with that XD