[sarcasmo]Tienes razón, el enrevesado eres tú

[/sarcasmo]
Ya en serio, el hecho de "necesitar" los uses de forma circular, es causa y consecuencia de un mal diseño.
Imagina, tengo una ventana principal, Form1, y después dos ventanas Form2 y Form3. Ahora quiero usar las 3 de forma circular, y estoy en problemas.
La solución: Crear otra unidad (sin Form asociado), además me ayudo de un tipo enumerado que me evita las referencias circulares:
Código Delphi
[-]
Unit publica;
interface
Uses unit1, unit2, unit3;
Type TAbrir = (aForm1, aForm2, aForm3)
procedure Abrir(QueAbrir:TAbrir);
begin
case QueAbrir of
aForm1 : TForm1.Create(application);
aForm2 : TForm2.Create(application);
aForm3 : TForm3.Create(application);
end;
Ahora Form1, Form2 y Form3 harán uso de la unidad publica, pero ya estamos evitando crear referencias circulares:
Código Delphi
[-]
Unit Unit2;
interface
uses publica;
IMPLEMENTATION
procedure TForm2.blabla(...);
begin
Form2 := publica.Abrir(aForm2);
end;
Y en otro sentido: Si las clases comparten atributos, será porque tienen algo en común, por tanto, es lógico que compartan la misma unidad ¿no?
Saludos