- will the user only change/edit personal information like email, password, address, etc? Then you can create a template for editing user object after login (you can use "RedirectAfterLogin" in the login form to send the user to the specific template)
- if you want that the user can create/edit multiple objects/classes (for example blog post, files, etc) a good idea is to create a personal "folder" where the user can "create" objects. In this case you can use personal folder extension and http://ez.no/developer/contribs/datatypes/ez_user_create_limit
In both situations you will need to create templates and adapt user roles/policies...
Note that 4.1 added support for limiting create rules based on parent node's owner / owner group, it is way better to use that then trying to impose access rules in template code (performance / security).