The class you are looking for is the WebDriverWait class that you can find here (C#):
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));
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.