Displaying a gameobject over gui issues HELP

Right now im trying to display a gameobject over a menu that is ran by OnGUI. I have followed many tutorials and looked up similar questions to this one but i cant seem to get it to work.

Like i said ive followed many tutorials on how to set it up so please dont simply link me to a page showing step by step how to do it.
Here are my settings for the main camera that runs the gui.
[20302-screen+shot+2014-01-06+at+12.01.06+pm.png|20302]

Under the culling mask all of them are selected except for OverGUI
Here are the settings for the other camera that will show the gameobject over the gui
[20303-screen+shot+2014-01-06+at+12.02.15+pm.png|20303]

And finally the object that i want to display has the layer set to OverGUI.
Any help on this issue would be much appreciated, like i said ive gone through multiple tutorials and i havent had any luck on resolving the issue.

Ive had this up for about 10 days now… Still cant figure out the problem, any help would be greatly appreciated

EDIT - GUI script -

using UnityEngine;
using System.Collections;

public class GUIscript : MonoBehaviour {
	public GUISkin heatlh;
	public GUISkin heatlh2;
	public GUISkin heatlh3;
	public GUISkin xp;
	public GUISkin xp2;
	public GUISkin xp3;
	public GUISkin greentext;
	public GUISkin redtext;
	public GUISkin gameovergui;
	public GameObject fallingobj1;
	public GameObject fallingobj2;
	public GUISkin menu;
	public bool ishovering = false;
	public bool ishoveringweap = false;
	public GUISkin inventoryfont;


	private bool ininventorymenu = false;
	private bool ingame = true;
	private bool inleveling = false;

	public int weaplevel;
	public float weapdamage;
	public string weaptype;
	public string weapname;
	public float weapattspeed;
	public Transform weaplocked;

	public int playerweaplevel;
	public float playerweapdamage;
	public string playerweaptype;
	public string playerweapname;
	public float playerweapattspeed;

	public int selectedweaplevel;
	public float selectedweapdamage;
	public string selectedweaptype;
	public string selectedweapname;
	public float selectedweapattspeed;

	public int enemylevel;
	public float enemycurrenthealth;
	public float enemymaxhealth;
	public Transform enemylocked;

	private playersetup playersetup;
	private cubeenemy cubeenemy;
	// Use this for initialization
	void Start () {
		playersetup = transform.GetComponent<playersetup> ();
	}
	
	void OnGUI(){
		//This segment here is what is being shown in the picture -
		if (ininventorymenu == true) {
			GUI.Box(new Rect(50,50,Screen.width-100,Screen.height-100),"");
			for(int x = 0;x<3;x++){
				for(int y = 0;y<4;y++){
					if (playersetup.Inventory[(y*4)+x].name == null){
						GUI.Box(new Rect((x*Screen.width/10)+100,(y*Screen.height/6)+100,Screen.width/14,Screen.height/8),"");
					}else{
						GUI.DrawTexture(new Rect((x*Screen.width/10)+100,(y*Screen.height/6)+100,Screen.width/14,Screen.height/8),Resources.Load(playersetup.Inventory[(y*4)+x].name) as Texture);
					}
					if(Input.GetMouseButton(0) == true){
						if (new Rect((x*Screen.width/10)+100,(y*Screen.height/6)+100,Screen.width/14,Screen.height/8).Contains(Event.current.mousePosition)){
							selectedweapname = playersetup.Inventory[(y*4)+x].name;
							selectedweaplevel = playersetup.Inventory[(y*4)+x].level;
							selectedweapdamage= playersetup.Inventory[(y*4)+x].damage;
							selectedweaptype = playersetup.Inventory[(y*4)+x].itemtype.name;
							selectedweapattspeed = playersetup.Inventory[(y*4)+x].attackspeed;
						}
					}
					if (selectedweapname != null){
						GUI.skin = inventoryfont;
						GUI.Label (new Rect (Screen.width- 550 ,Screen.height/2-300, 500,200), selectedweaptype);
						GUI.Label(new Rect(Screen.width- 600,Screen.height/2-250,500,200),"Level " + selectedweaplevel + " "+ selectedweapname);
						GUI.Label(new Rect(Screen.width- 600,Screen.height/2-150,500,200),"Damage: " + selectedweapdamage);
						GUI.Label(new Rect(Screen.width- 600,Screen.height/2-50,500,200),"Attack Speed: " + selectedweapattspeed);
					}
				}
			}
			if(GUI.Button (new Rect(80, Screen.height-90,100,40),"Resume")){
				Time.timeScale = 1;
				ininventorymenu = false;
				ingame = true;

			}

		}
		//end of the segment
		if(ingame == true){
			if(GUI.Button (new Rect(80, Screen.height-90,100,40),"Inventory")){
				//Time.timeScale = 0;
				selectedweapname = playersetup.currentweapon.name;
				selectedweaplevel = playersetup.currentweapon.level;
				selectedweapdamage = playersetup.currentweapon.damage;
				selectedweaptype = playersetup.currentweapon.itemtype.name;
				selectedweapattspeed = playersetup.currentweapon.attackspeed;
				ininventorymenu = true;
				ingame = false;
			}
			GUI.Box(new Rect(20,Screen.height - 220,330,200),"");
			GUI.skin = heatlh;
			GUI.Label(new Rect(140, Screen.height-220,200,30),"Overall Level " + playersetup.playerlevel);
			GUI.Box (new Rect(80, Screen.height-200,200,30),"");
			if (playersetup.player.overhealth > 0) {
				GUI.skin = heatlh2;
				GUI.Box (new Rect (80, Screen.height-200, (playersetup.player.currenthealth * 200 /playersetup.player.overhealth), 30), "");
			}else{
				GUI.skin = gameovergui;
				GUI.Label(new Rect(Screen.width/2-100,Screen.height/2,200,100),"GAME OVER");
			}
			GUI.skin = heatlh3;
			GUI.Box (new Rect(80, Screen.height-200,200,30),"Health: " + playersetup.player.currenthealth+ "/" + playersetup.player.overhealth);


			GUI.Label(new Rect(130, Screen.height-150,200,30),playersetup.currentweapon.itemtype.name +" Level: " + playersetup.currentweapon.level);
			GUI.skin = xp2;
			GUI.Box (new Rect(80, Screen.height-130,200,30),"");
			if(playersetup.currentweapon.itemtype.currentxp > 0){
				GUI.skin = xp3;
				GUI.Box (new Rect (80, Screen.height-130, (playersetup.currentweapon.itemtype.currentxp * 200 /playersetup.currentweapon.itemtype.xptolevel), 30), "");
			}
			GUI.skin = xp;
			GUI.Box (new Rect(80,Screen.height-130,200,30),"Weapon: " + playersetup.currentweapon.itemtype.currentxp+ "/" + playersetup.currentweapon.itemtype.xptolevel);


			if (ishovering == true & ishoveringweap == false){
				if(enemylocked){
					if (enemylocked.parent.transform.GetComponent<cubeenemy>().distance < 10){
						GUI.skin = menu;
						GUI.Box(new Rect(Screen.width- 350,Screen.height - 220,330,200),"");
						
						GUI.Label(new Rect(Screen.width- 210,Screen.height - 200,100,200),"Level " + enemylocked.parent.GetComponent<cubeenemy>().level + " Cube");
						
						GUI.skin = heatlh;
						GUI.Box (new Rect(Screen.width- 270,Screen.height - 180,200,30),"");
						
						GUI.skin = heatlh2;
						GUI.Box (new Rect (Screen.width- 270 ,Screen.height - 180, ( enemylocked.parent.GetComponent<cubeenemy>().currenthealth * 200 /  enemylocked.parent.GetComponent<cubeenemy>().maxhealth), 30), "");
						
						
						GUI.skin = heatlh3;
						GUI.Box (new Rect(Screen.width- 270,Screen.height - 180,200,30),"Health: " +enemylocked.parent.GetComponent<cubeenemy>().currenthealth+ "/" + enemylocked.parent.GetComponent<cubeenemy>().maxhealth);
					}else{
						ishovering = false;
					}
				}
			}else if(ishovering == false & ishoveringweap == true){
				if(weaplocked){
					if (weaplocked.GetComponent<weaponhover>().distance < 2){
						GUI.skin = menu;
						GUI.Box(new Rect(Screen.width- 350,Screen.height - 220,330,200),"");

						GUI.Label (new Rect (Screen.width- 310 ,Screen.height - 220, 200,200), weaptype);
						GUI.Label(new Rect(Screen.width- 330,Screen.height - 200,200,200),"Level " + weaplevel+ " " + weapname);

						GUI.Label (new Rect (Screen.width- 150 ,Screen.height - 220, 200,200), "Current Weapon");
						GUI.Label(new Rect(Screen.width- 180,Screen.height - 200,200,200),"Level " + playerweaplevel + " "+ playerweapname);
						if (GUI.Button(new Rect (Screen.width- 300 ,Screen.height - 100, 80,30),"Equip")){
							//do{
							//
							//}while(transform.GetComponent<
						}
						if(weapdamage > playerweapdamage){
							GUI.skin = greentext;
							GUI.Label (new Rect (Screen.width- 330 ,Screen.height - 170, 200,200), "Damage: " + weapdamage);
							GUI.skin = redtext;
							GUI.Label (new Rect (Screen.width- 150 ,Screen.height - 170, 200,200), "Damage: " + playerweapdamage);
						}else{
							GUI.skin = redtext;
							GUI.Label (new Rect (Screen.width- 330 ,Screen.height - 170, 200,200), "Damage: " + weapdamage);
							GUI.skin = greentext;
							GUI.Label (new Rect (Screen.width- 150 ,Screen.height - 170, 200,200), "Damage: " + playerweapdamage);
						}
						if(weapattspeed > playerweapattspeed){
							GUI.skin = greentext;
							GUI.Label (new Rect (Screen.width- 330 ,Screen.height - 150, 200,200), "Attack Speed: " + weapattspeed);
							GUI.skin = redtext;
							GUI.Label (new Rect (Screen.width- 150 ,Screen.height - 150, 200,200), "Attack Speed: " + playerweapattspeed);
						}else{
							GUI.skin = redtext;
							GUI.Label (new Rect (Screen.width- 330 ,Screen.height - 150, 200,200), "Attack Speed: " + weapattspeed);
							GUI.skin = greentext;
							GUI.Label (new Rect (Screen.width- 150 ,Screen.height - 150, 200,200), "Attack Speed: " + playerweapattspeed);
						}
					}else{
						ishoveringweap = false;
					}
				}
			}
			if(inleveling==true){

			}

		}
	}
	public void gameover(){
		Instantiate (fallingobj1 ,new Vector3(Camera.main.transform.position.x-4.5f,6.5f,-3), Quaternion.identity);
		Instantiate (fallingobj2 ,new Vector3(Camera.main.transform.position.x-3,Camera.main.transform.position.y-2,-3), Quaternion.identity);

	}
}

I wasn’t sure if you wanted specifically what was being displayed in the picture or the entire script so i just pasted it all.

I just read this thread link from aeroson. http://answers.unity3d.com/questions/202670/gameobject-on-top-of-gui.html It works great. So, he should get the credit. Two (or more) cameras, different depths. I put the GOs (Game Objects) on a second camera at a higher depth and set the Don’t clear" on the second camera. I was able to see GOs on top of the NGUI layout I had created. Very cool.
You can also watch the cameras training in the LIVE Training session (Archives) on the Unity site. http://unity3d.com/learn/tutorials/modules/beginner/live-training-archive/cameras They show how to create a second camera in a 3D setting, but the concept still applies.
Hope this helps.

the GUI methods are always displayed at the end. This means you cannot draw the game world over it or display a gameobject on top.

One convoluted way would be to use a camera with “Don’t clear” as the clear flags, set it to render into a texture (Unity Pro only) and a script that gets the pixels of that RenderTexture and displays them on the OnGUI thread as another texture.