A coroutine is probably what you need here. There is an example of how to use a coroutine to switch between two states over a few seconds on the linked manual page.
using UnityEngine;
using System.Collections;
public class example : MonoBehaviour {
IEnumerator Do() {
print("Do now");
yield return new WaitForSeconds(2);
print("Do 2 seconds later");
}
void Awake() {
Do();
print("This is printed immediately");
}
}
The WaitForSeconds class is used to pause the coroutine’s execution and then continue after a period of time.
As for GUIText, this is a component so you can’t add it at runtime with the code you have used here. You should use GameObject.AddComponent to do this, but it is possible that it doesn’t work as you might expect. If there is already a GUIText component on the object then you can refer to it with the guiText property within the script - you don’t need to create a new instance to do this.