How do you deal with updating your plugin when it's not backwards compatible?

Backwards compatibility is a difficult and under-appreciated facet of plug-in development. Getting it right involves pre-planning and a lot of testing.

Just one comment on adding a version to your saved state:

While it’s not necessarily supported by the JUCE wrappers, there is already a chunk version in the specs for AU (see kVersionString in AUBase::SaveState() and AUBase::RestoreState()), VST (see AEffect::version and discussion at Juce, Projucer and VST Version / Vendor Version) and AAX (see AAX_CChunkDataParser::mChunkVersion). Given there is already a lot of confusion about differences between the plug-in version and the chunk version, you probably don’t want to have your own third preset version that is independent of those other two.