Evan,
FWIW, if you have to bring up a FK constraint on "really cruddy" you can use WITH NOCHECK . This can help you out so that "new cruddy" data can't get into the system anymore. I have had to use this a couple of times to help isolate the errant code that was causing the crud to begin with.
>Hi Kurt. Thanks that was it. I removed the orphans and it works fine now.