You can use the Object.GetType() method to obtain information about a particular object you got.
Here's an example:
using System;
static class Program
{
    static void Main()
    {
        var obj = new { Random = "Object" } as object;
        var t = obj.GetType();
        var asm = t.Assembly;
        Console.WriteLine("Type name     : " + t.FullName);
        Console.WriteLine("Namspace      : " + t.Namespace);
        Console.WriteLine("From assembly : " + asm.FullName);
        Console.WriteLine("Located at    : " + asm.Location);
        Console.ReadKey();
    }
}
Or in your case...
var t = ie.Document.GetType()
...should give you type information about what is it that is really inside ie.Document.
A quick search on MSDN gets me to this page which describes how to get the document interface:
About MSHTML
Note: I cannot try any of this as I am stuck with VS.80
Just add a reference to Microsoft.mshtml. 'Nuff said.
Added: OK, a few more words - .NET programs operate with COM objects through these interop assemblies. If you add a reference to a COM object in Visual Studio, VS generates one for you. For the WebBrowser there is already one pre-generated, because it's so often used. But you can't operate with COM "directly". Well, maybe you can, but that would be masohistic.