Have you tested the intended code on a subset of stacks in your network?
I like to install new code on one stack and let it run a few days. Then install on a group of stacks for a few days before rolling it out network wide.
We do the download and install, then confirm it exists on all slots.
show ver image, confirm new code (and ssh mod if applicable) are on each slot
Show switch, and confirm the upgraded partition is the one that's selected to boot.
Then we typically schedule a reboot time with the reboot command (after checking that the date/time looks correct on the switch).
Haven't had a problem with doing the download and install on production equipment, then schedule the reboot for after hours for example (or reboot on demand).
There is no issue with pre-loading the image and then waiting for the maintenance window to reboot the switches. Using this knowledge article: https://gtacknowledge.extremenetworks.com/articles/How_To/How-to-Obtain-and-Upgrade-EXOS just do steps 1-4 on each switch you would like to pre-load and do step 5 (reboot) during the maintenance window!
10 years in TAC makes you always consider the "if it goes wrong" first :)