The class you are looking for is the WebDriverWait class that you can find here (C#):
http://code.google.com/p/selenium/source/browse/trunk/dotnet/src/WebDriver.Support/UI/WebDriverWait.cs
I created an extension method to make it easier to use that looks something like this:
public static class BrowserExtensions
{
public static T WaitUntil<T>(this IWebDriver browser, Func<IWebDriver, T> condition, int timeout = 5)
{
var wait = new WebDriverWait(browser, new TimeSpan(0, 0, timeout));
return wait.Until(condition);
}
}
You can then use it like this:
var element = webDriver.WaitUntil(x => x.FindElement(By.Id("element-id")));
Note that this does not guarantee that the element is visible when you get it back!
Also I should probably mention that I have experienced problems using the WebDriverWait class and I think it could use some work to make it more stable.