@ Bet
There is no plugin/extension available to do this but it is possible. I recently custom coded an extension for another user which used Gravity Forms for user registration and payment/renewals where certain fields were only available depending on the selected membership level. Additionally it only allowed n-number o categories to be selected based on selected membership level. It actually went further than this and integrated with Restrict Content Pro. After payment/approval, the user’s membership level and expiration was also setup. It even added/removed the user from their “legacy” membership plugin to provide backward compatibility. It was quite the integrations plugin. All of this was hard coded in the plugin, no UI so it is very limited to their specific requirements. Any way… all this to say, yes it is possible but it definitely is not point and click.
