Even within a package a pair of classes that reference each other must be tricky. I'd have to guess the compiler works part way through each class, just enough to understand the public interfaces, then goes back to work through every line of code.
Circular references are usually a warning sign about your design. They are unavoidable in some situations, so they aren't a fatal sign. (It's much worse in C, I guess.) But circular dependencies between packages are a "pretty bad" sign. Robert Martin has written extensively on dependency management.
This paper talks about it; Google for more articles by the same author.