From Wikipedia:
Circular dependencies can cause many
unwanted effects in software programs.
Most problematic from a software
design point of view is the tight
coupling of the mutually dependent
modules which reduces or makes
impossible the separate re-use of a
single module.
Circular dependencies can cause a
domino effect when a small local
change in one module spreads into
other modules and has unwanted global
effects (program errors, compile
errors). Circular dependencies can
also result in infinite recursions or
other unexpected failures.
Circular dependencies may also cause
memory leaks by preventing certain
very primitive automatic garbage
collectors (those that use reference
counting) from deallocating unused
objects.