You could use the DisplayNameAttribute on the properties if you weren't creating an anonymous type. But, you'll need to set the HeaderText property of the column in the DataBindingComplete event since you are.
Personally, I think the attribute method would be best, but you'd have to create a type that you'd create similarly to how you create the anonymous type.
class MyClass {
[DisplayName("Family Name")]
public string FamilyName { get; set; }
}