I can't identify the exact circumstances, but I have seen events where a source code file has been deleted but clojure.tools.namespace.repl/refresh still tries to reload it. Because the file doesn't exist, there's an exception when you try to load it, so you're stuck.
This happens to me pretty frequently, especially when switching branches (which is ironically the best use case for calling refresh).
I still don't know exactly how this occurs.
The workaround for now is to call c.t.n.repl/clear, added in 0.2.5
yep, noticed that independently and just confirmed that it works.