By default levels can't be changed by the user, only admin/moderator can change member's level to set the default level. This module allows to sell member's levels as memberships, for example.
You can set pricing for different periods (days, weeks, months, years) for particular level. It's possible to have different pricing options for one level. Additionally it's possible to set free trial period and free levels (to switch to them without payments).
This module requires Payments module to sell memberships.