Ah I think I've found out the problem - nothing to do with the setup for my PropertyDescriptors, PropertyGrid or ICustomTypeDescriptor...
I had an GetFocus event on the tab with the property grid, it was triggering every time I click the mouse and that was re-setting the SelectedObject on the PropertyGrid :)
I had an GetFocus event on the tab with the property grid, it was triggering every time I click the mouse and that was re-setting the SelectedObject on the PropertyGrid :)