If you want to talk about "surjection" your category must have a functor $C \stackrel{U}{\to} \text{Set}$ that specifies the underling set of every object.
You question can be reformulated as follows: _when does $U$ reflect epimorphisms?_
I do not know when such a characterization exists, but if $U$ is faithful, then it reflects epimorphisms.
I do believe that all the cases you can think of are due to this phenomenon, the forgetful functor in those cases is faithful.