Rasmus,
I had started down the path of bisecting the file, but wasn't having much luck isolating the problem, so I posted the question. I had some time to get back to it this afternoon, and I eventually tracked this down. It had to do with a missing ID rather than a duplicate one. The file contained a link to an ID that no longer existed in the file (or in any other org files), but it wasn't listed in the *Messages* buffer and export kept searching through all my org files over and over until I pressed C-g. When I removed that link, I still had some other problems in the file with text links, i.e. [[target]], that didn't have a matching target, i.e., <<target>>, but now these were identified in the *Messages* buffer (one per export attempt until I found them all). Once all of those were fixed, the export ran successfully.
I do use #+INCLUDE, but that is not the problem here.
Thanks,
Bruce