The approach I've taken for similar things is to grep the Emacs and Elpa source code for the error to find where it might be triggered, find some likely looking functions, then instrument them to invoke edebug.
http://www.gnu.org/software/emacs/manual/html_node/elisp/Instrumenting.html#Instrumenting
Then when they get triggered, step through the code, look at the call stack, etc, and try to figure out where things are going wrong.
I couldn't find anything for "Invalid face reference", so this approach might not work in this case, but "Invalid face" had a couple of hits in the Emacs source code:
C:\apps\emacs\lisp>grep -ir "invalid face" *
ChangeLog.10: always highlighted with the inverted invalid face. It can
ChangeLog.14: `face-id', which already signals an error for invalid faces.
ChangeLog.8: The code relied on the fact that Emacs ignored invalid faces in
cus-edit.el: (error "Invalid face %S" face))
cus-edit.el: :error (format "Invalid face: %S"
cus-edit.el:(add-to-list 'debug-ignored-errors "^Invalid face:? ")
Binary file cus-edit.elc matches
faces.el: (t nil)))) ; Invalid face value.
faces.el: (t nil)))) ; Invalid face value.
gnus/ChangeLog: place holder since this gives `Invalid face reference: nil' messages.
In that file, customize-face
can trigger that error.
Not sure if that's where your error is happening - it could be in an Elpa package also, but that's one possible approach.