Which ways are there to decouple deployment from release?
For software in the web app category, depending on you infra/hosting provider such decoupling might be possible to switch incoming traffic across (or split it between) different deployed versions of the sw, practically covering any of the changes you mention: bugfixes, visuals, etc. 

Such support would typically not require feature toggles. And it might be applicable regardless of the app being monolithic or split in microservices.

For example Google's App Engine Paas offering has support for traffic splitting and migration. 

From Splitting Traffic:


  You can use traffic splitting to specify a percentage distribution of
  traffic across two or more of the versions within a service. Splitting
  traffic allows you to conduct A/B testing between your versions
  and provides control over the pace when rolling out features.


From Migrating Traffic:


  Traffic migration switches the request routing between the versions
  within a service of your application, moving traffic from one or more
  versions to a single new version.