Yes, it is pretty simple doing it with keyframes hidding the geometry that you don't want to be in there.
Just got to Properties > Object Properties > Visibility and right-click in Viewport or Render and add a keyframe. Do this to all parts making them visible or not every frame.

If you want to export this to a png I recommend animate a sequence (length deppends on how many different combinations you want to do) and then Render -> Render Animation.
But if you want Blender to decide randomly decide what objects will be seen... well that's far more complicated. You could try adding a driver (right-click > add driver/edit driver) to the same Visibility option (Viewport or render), and write this expression: "round(noise.random())", which will generate a random number and round it so you will have two values, 0 (seen) or 1 (not seen), every frame.

You will have to accept this dialogue. If it doesn't pop-up automatically, just save and restart Blender

The problem with this method is that maybe there are accesories that are incompatible, like two watches, that could be seen at the same frame, overlapping each other.
You could use some very complex composition with Geometry Nodes in order to make all of this, even avoiding the incompatible accesories issue, but it will take a lot of time and advance knowledge in Geometry Nodes.
For the dog you can do it with Shader Editor and material nodes: go to Shading tab and under the Shader Editor Window check "Use nodes" if it wasn't activated and make something like this workflow:

Or simply under Material Properties panel add keyframe to the Base Color

and then insert keyframes onto the RGB value (right-click over the colored rectangle)
Again, you could use the same random driver expresión generator onto a Combine RGB node, but the color will be fully random and maybe some colors don't are to your taste.
