Ben,
here is what i came up with after i wrote this morning, and it looks very similar to what you just posted.
mySpec.Customization = itmSpecItem.Spec;
CustomizationSysprep winIdent = (CustomizationSysprep)itmSpecItem.Spec.Identity;
CustomizationFixedName hostname = new CustomizationFixedName();
hostname.Name = txtVmName.Text;
winIdent.UserData.ComputerName = hostname;
mySpec.Customization.Identity = winIdent;
from that i was able to have my clone vm's come up with the proper names once the code is all tidy i'll post it up.