For our base level upgrade (no training or new features), we specify several standard reports to compare pre- and post-upgrade. Balance sheet, open SO, Open PO, IM detail and valuation, etc. Nicole's task list is a very good, different way to get at some other elements.
Also, we explicitly state the length of time customer has to report upgrade-related issues. Longer times cost more. Anything after that is not covered in any upgrade project support.
We also have learned to invert the approval. So, we run the before and after reports and send it to them. (Of course, we check them too.).If we don't hear anything in x days, then the customer has approved them. Basically, once you have verified that nothing funky happened to the data, your risk of something really hard to handle evaporates.