When using a ModelMultipleChoiceField?, initial values are not selected. After some investigation, I discovered that this was because SelectMultiple?.render() was comparing the primary key of the choices to the unicode string of each value; this obviously only works if one's model returns the primary key, which is near-universally suboptimal.
I have modified SelectMultiple? to call a method value_to_str() (perhaps not the best name) which defaults to returning the force_unicode() of the value; I've added a subclass ModelSelectMultiple? which overrides this to return SelectMultiple?.value_to_str(value._get_pk_val()). Finally, I modified ModelMultipleChoiceField? to use a ModelSelectMultiple? widget rather than a SelectMultiple?.
This does what's expected, and is extensible in the future.