Use IInterfacedString when passing strings to Gecko. TIStringImpl is a container for IInterfacedString adding ref counting so that you don't have do destroy the object explicitly. You can't access TIStringImpl directly. Use Newstring that creates a TIStringImpl and returns the IInterfacedString.
Simple example getting all tags in the document:
uses
GeckoBrowser,nsGeckoStrings,nsXPCOM;
....
var
s,s2:IInterfacedString;
NL:nsIDOMNodeList;
i:integer;
sName:string;
begin
GeckoBrowser1.LoadURI('http://google.com');
s:=newstring(widestring('*'));
s2:=newstring;
NL:=GeckoBrowser1.ContentDocument.GetElementsByTagName(s.AString);
i:=NL.GetLength();
while i>0 do
begin
NL.Item(i-1).GetNodeName(s2.AString);
sName:=s2.ToString;
i:=i-1;
end;
end;