I was running the stsadm -o preupgradecheck on my dev SharePoint 2007 environment and out of no one got an error “An error occurred while parsing EntityName. Line 43, position 220.”  I got no error information in the app or sys logs, and ULS wasn’t very helpful for me anyways. Maybe with verbose turned on it would have shown more, but that’s a different blog. Anyways I did some search and found some posts that made mention of a rule that the preupgradecheck was using and it having a conflict with the ampersand character “&”. It mentioned checking the content source names, but of course all of mine did not contain that character. I then remembered modifying one of the start URL’s in a content source at a developers request. So i checked out that content source url and sure enough the url included a couple variables including the & character.
In order to get the preupgradecheck to run successfully I just removed that ampersand character, and saved the content source (it wasn’t doing any active crawls). The checker completed successfully and I modified the url in the content source back to the original which included the & and all is well.
From seeing some other blogs about that similar error looks like the ampersand isn’t your friend with some .net web service calls.​