Тема хоть и стара, но листая ответы, так и не удалось встретить ожидаемое чистое решение.
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 

.