Is there a way to restrict who can change the visibility of course? I've had a look through Course and Account permissions but couldn't find an option that suits.
The permission you're looking for is called course state - Manage. Below is a description about the permission and things to consider when limiting the permission.
Retrieving data ...