My extensions actually do this.
The streamer has the option to upload an own image (hosted on my EBS) for the background and on one extension the config page also has a color picker to customize the color of the texts.
Upon initialisation of the panel I fetch the config from my EBS and just set the according CSS attributes (background URL, text color, etc.) via JavaScript to the values from the config - pretty much like you suggested yourself.
If you don’t have an own EBS you can use the configuration storage service the Twitch API offers.