I have a machine with 2 GPU's. One is not great, but has 3GB of ram, the other is much better, but only has 2GB. I currently have a scene that is using around 2.5GB at the beginning, but the scene losses complexity as time goes by. Is it possible to tell blender to use my 3GB GPU at the beginning, then, once the complexity goes below 2GB, have the other card kick in as well? Or am I completely misunderstanding how blender uses vram?
Alternative solution to switching GPUs
Use render layers! Just put foreground objects in a layer and background objects in another, render (making sure you enable transparency), then combine the layers using the built-in compositor. This way you can also render a layer with more samples then the other, instead of rendering everything with high samples.
Not natively, no, at least not through the GUI, as far as I know.
You might be able to do that with command line options for background rendering, or through some custom Python scripting though.
If you want a quick out-of-the-box solution you can look into the commercial addon Render+
It is a payed addon (not too expensive for what it does, about $20) but it should be able to do what you want directly through the GUI without any need for scripting or command line options.
You can set up batch render jobs with custom computing devices.