Kevin,
very interesting entry. ContentPresenter has the magic to associate an object to the proper datatemplate, or apply a random template, or generate content. But at the end of the road, it's down to DataTemplate.LoadContent()! That's the best way to create your own xxxPresenter in my opinion.
Get your TemplatedParent from a class called MyItemsPresenter, from there get your DataTemplate from wher eyou need it (and your TemplateSelector if you require one), and generate your content by setting your visual tree to the LoadContent() result?
The sad thing is that the inheritance chain has been blocked from FrameworkTemplate, so you have to do it that way. It does feel a bit naughty to have to rely on a datatemplate you can't validate as early as you can when your property is of type ItemsPanelTemplate.
At least that's the path we use here for presenter-like objects in the controls we're developing.