You have to include the ID field as the first field of all your combo boxes i.e.
Code:
SELECT Site.SiteID, Site.SiteName FROM Site GROUP BY Site.SiteID, Site.SiteName;
SELECT Factory.FactoryID, Factory.FactoryName FROM Factory WHERE (((Factory.SiteID)=[forms]![form1]![combo0]));
site combo box and factory combo box respectively
Make the column count 2 for all combo boxes
Make the first column width 0 so you only see the description you're interested in
remove the AFTER UPDATE event from combo0
add in the ON EXIT property of Combo0: combo2.requery