If you're going with the same brand of phone, many of the manufacturers now have a way to backup and restore most everything in one shot. If that isn't an option to you, here's some other options.
Most apps are now synced via your Google account. When you set up the new phone, you can have it automatically download all your apps as long as you use the same Google account, or you can manually go one by one in the Play store. When you use those apps again, most should pull your synced data from the cloud as well.
I would do all this before resetting the old device to turn in. That way you can verify everything synced, and deal with what isn't. You can use the
APK Extractor app to save apps to the sd card or other backup method that may have been removed from the Play store. Then you can install those to the new phone by allowing to install from unknown sources (usually an option in the security settings). That app doesn't extract saved data, though, so you'll likely have to rely on the app to have cloud backup for that. The Helium app use to be the go to app for non-rooted phones, but it's since become problematic and doesn't work on newer versions of Android. If your phone is rooted, I think Titanium is still an option to backup apps and app data.
Photos and media can be backed up via the Google Photos app, but I try to keep those to my SD card and is simple to swap over. Other stand alone files like pdf's and such would also easily transfer via the SD card. If that isn't an option, a service like Dropbox would be fine for that.