As the title says, I would give to members a way to choose their own role as required via radio buttons in their profile page. Any suggestion?
You can do this with rules.
Event: After saving user profile Conditonal: field has value Action: Assign role to user
Something long these lines. You will need to create a new rule for each role unless you do some special field-value handling. You will also need to create a few checks in here to prevent the rule from re-assigning a role to a user.
The Role Delegation module should actually get you most of the way there. You would have to create a custom module to implement
hook_form_alter() and change the role selection from multiple checkboxes to single radio buttons.