This cycle detection problem is always trotted out, but it never seems to happen in real programs. (Anyway it's never happened to me.) The corresponding problem in GC systems, of stale pointers to garbage preventing collection, is responsible for uncounted exabytes of leaked memory at any moment, and for my browser running no faster than Netscape on a 486.
The world needs a systems-programming language as powerful as C++, but without the cruft. (Cruft being the C type system, and failed experiments like exception checking and virtual functions.) It is unfortunate that current efforts at language design are almost always contaminated with CONSes. A sign of the strength of a language design is that library components do what had to be built into weaker languages. Virtual function support should be a library facility in the Glorious Successor to C++.