The SharePoint June 2009 Cumulative Update fix list contains this entry (http://support.microsoft.com/kb/970946/):
When a SharePoint user creates a circular loop between lookup columns, if you click one of the lists that contain lookup columns, this action will cause 100% CPU usage on the SharePoint server. To work around this issue, you have to perform an application pool recycle.
(Also mentioned on my SharePoint updates page: http://blog.hemker.de/sharepoint-updates/)
I tested and this issue can be reproduced very easily.
1. Create two custom lists, for example list1 and list2
2. Create a column in list1, for example c-list1. It is of type “Single line of text”
3. Create a column in list2, for example c-list2. It looks up the column c-list1 in list1.
4. c-list1 cannot be changed to type Lookup, so we have to delete it.
5. Recreate c-list1 as type Lookup and let it lookup c-list2 in list2.
6. Open list1 or list2 and enjoy the CPU load. Only IISREST helps here. At least until the next access to list1 or list2.
If you apply the June 2009 CU, one of the existing columns will be changed to lookup the title column in the other list, not the lookup column.
If you try to create the circular loop columns when the June 2009 CU is applied, one of the columns will be changed to lookup the title column in the other list, not the lookup column.