<p>Are there any classes in the .NET framework I can use to throw an event if time has caught up with a specified DateTime object?</p>

<p>If there isn't, what are the best practices when checking this? Create a new thread constantly checking? A timer (heaven forbid ;) )?</p>

When a thread is sleeping it consumes no CPU usage. A very simple way would be to have a thread which sleeps until the DateTime. For example
```
```
DateTime future = DateTime.Now.Add(TimeSpan.FromSeconds(30));
        new Thread(() =>
        {
            Thread.Sleep(future - DateTime.Now);
            //RaiseEvent();
        }).Start();
```
```
This basically says, get a date in the future (thirty seconds from now). Then create a thread which will sleep for the difference of the times. Then raise your event.
Edit: Adding some more info about timers. There is nothing wrong with timers, but I think it might be more work. You could have a timer with an interval of the difference between the times. This will cause the tick event to fire when the time has caught up to the date time object. 
An alternative, which I would not recommend, and I seem to think you have though of this, is to have a timer go off every five seconds and check to see if the times match. I would avoid that approach and stick with having the thread sleep until there is work to be done.