Check the settings for recyclebin and change settings such that the recyclebin link shows in courses all the time rather than hidden until moodle detects a module has been deleted via the running of cron and adhoc task.
That then gives you, the admin, a link to see what's in there and even delete rather than waiting for the default 7 days.
Also - reduce/shorten the time recyclebin backups are kept in 'limbo'. That means files are moved to trashdir more quickly and files/folders in there can manually be erased in a space crunch without any adverse affects on the functioning of Moodle.
Make sure your cron and adhoc_task are running properly ... cron once every minute and if any adhoc_task are re-scheduled for a later date, investigate those.
If you do above, might want to warn teachers/course designers they will have less time to change their minds. ;)
A note: there is no recyclebin button for category + courses in those categories deletions. So if doing end of academic year 'clean up' would strongly advise making a site backup and/or making an autobackup run of all courses prior to 'clean up'.
Admin tip: you can create and execute scripts in moodlecode/admin/tool/task/cli/ to help in an Admin pinch ...
Example: bash shell script called 'cleanup' in directory above and made executable ... contains:
php schedule_task.php --execute="\logstore_standard\task\cleanup_task";
php schedule_task.php --execute="\core\task\backup_cleanup_task";
php schedule_task.php --execute="\core\task\cache_cleanup_task";
php schedule_task.php --execute="\core\task\file_temp_cleanup_task";
php schedule_task.php --execute="\core\task\file_trash_cleanup_task";
php schedule_task.php --execute="\core\task\session_cleanup_task";
php schedule_task.php --execute="\core_files\task\conversion_cleanup_task";
php schedule_task.php --execute="\tool_recyclebin\task\cleanup_category_bin";
php schedule_task.php --execute="\tool_recyclebin\task\cleanup_course_bin";
php schedule_task.php --execute="\core\task\messaging_cleanup_task";
php schedule_task.php --execute="\core\task\delete_incomplete_users_task";
php schedule_task.php --execute="\core\task\delete_unconfirmed_users_task";
run as root like ./cleanup in that directory.
Perfect solution .. no ... is there such a thing as 'perfect'? But it does get the job done. And, besides, as Moodle Server Admin that's why you get paid the 'big bucks' (yeah, right!)! :|
Above is just my 2 cents!
'SoS', Ken