I would have a look in the yt source in yt/fields/particle_fields.py at the field functions like particle_mass and particle_cic. They are good examples of just how the deposited fields are done. In addition, there is a field function, _get_density_weighted_deposit_field, for doing mass-weighted deposited fields. I think this is exactly what you're looking for. In fact, it seems that mass-weighted velocity fields already exist as something like ("deposit", "<PTYPE>_sum_velocity_x") or ("deposit", "<PTYPE>_nn_velocity_x"). If you have multiple particle types for stars and such, they should already be defined with these fields. This should give you a template for implementing any other fields of this type.