In open source projects, why do software patches have to be accepted by a developer?
This is because distros contain only one version of one piece of software. If your patch is accepted by the developer, he/she will release it which will make it's way to the end user.
Couldn't contributors just release their own patches and allow people to
add the patch if they choose to
It is possible, but in this case the people need to understand how to apply patches. It is usually a very tricky and geeky way to apply code patches. The user needs to get the source code of the software, apply patch, build it and install it. Most of the non-techie users just install the already built software. Most of them won't go through the hassles of patching their software.
For instance, lots of people want Rhythmbox to be more attractive.
Why can't the people who design themes on DeviantArt turn those into
code and let users download those themes themselves, even if the developers
at Rhythmbox won't accept different themes?
You are talking mostly about themes. Many softwares have plugin system which allow the application behavior to be tweaked to suit the user's need. A plugin can make Rhythmbox looks more attractive. Not all the aspects of the application can be tweaked. Only those aspects of an application can be tweaked this way (plugins/themes) which are explicitly supported by the application developer.