Тема хоть и стара, но листая ответы, так и не удалось встретить ожидаемое чистое решение.
Sergei I. Gorelkin писал(а):Единственный способ - добавить в интерфейс лишний метод, который будет возвращать Self.
В точку и  без шаманства.
Odyssey писал(а):- Код: Выделить всё
 function IMyIntf.GetObject: TObject;
а во всех реализующих его классах делать
- Код: Выделить всё
 function TMyIntfImpl.GetObject: TObject;
begin
  Result := Self;
end;
И это даже почти не шаманство 

 
На верном пути ...
Чистое решение:	Класс TComponent использует  модель одновременной работы с объектами и итерфейсами, которые эти объекты реализуют.	
	Это позволяет компонентам реализовывать интерфейсы, и дать возможность интерфейсным свойствам использоваться в инспекторе объектов. А чтобы работать с опубликованными интерфейсными свойствами, необходим сам компонент для того, чтобы иметь возможность получить имя компонента, проверить его свойства и т.д.. 	
	Как раз TComponent использует чистое решение: он реализует интерфейс 
IInterfaceComponentReference с единственным методом 
GetComponent, который и возвращает компонент, реализующий интерфейс. 
Определение взято из 
Delphi 7 "Classes.pas":
- Код: Выделить всё
   IInterfaceComponentReference = interface
    ['{E28B1858-EC86-4559-8FCD-6B4F824151ED}']
    function GetComponent: TComponent;
  end;
В таком случае код можно написать так:
- Код: Выделить всё
   TExampleObject = class;   
  IExampleInterfaceObjectReference = interface
    ['Ctrl + Shift + G']
    function GetObject: TExampleObject;
  end;
  
  TExampleObject = (TObject, IExampleInterfaceObjectReference, ...)
     ...
   function GetObject: TExampleObject;  
  end;
  
implementatoin // РЕАЛИЗАЦИЯ
   function TExampleObject.GetObject:TExampleObject;
   begin
      Result   :=   Self; 
   end;      
Пример использования:
- Код: Выделить всё
    var
      ExampleIntf  :IExampleObject;
      ExampleObj  :TExampleObject; 
   begin
      
      ExampleObj   := (ExampleIntf as IExampleInterfaceObjectReference).GetObject;
      Caption      := ExampleObj.ClassName;   
   end;
      
Следует при этом учитывать, что обнуление ссылок на интерфейс может привести к разрушению объекта до его использования через объектную ссылку. У TComponent методы 
_AddRef и 
_Release возвращают -1 и не влияют на счётчик.
P.S.: А ведь некоторые ждали выхода Delphi 2010 

.