Profiles can be used to display fields about contacts publicly and can therefore be used to create a Member Directory. There is an explanation of how to do this here. Steps include setting the Profile to "Limit listings to a specific group" so you first create a Group that contains your 'members'. But doing this for the 'organisation' related to the individual who is doing the updating has some limitations iirc.
You can also give your Contacts access to their 'dashboard' provided they have a Permissioned Relationship over that contact. This can give them access to edit more information about their organisation - but from memory the fields available are not easily modified either eg to include a Description, or Logo (hopefully someone points to an easier solution).
Looks like you are not using Drupal, so the following is an answer for for others who might find this question.
In Drupal all of this becomes much easier. Webform-CiviCRM is your friend as it can allow one user update any fields about their related organisation.
Views gives many options for then displaying this info, though another approach entirely is to use the civicrm node reference module to link content (nodes) with the civicrm record of the Organisation, and then use that to not only pull civi data for that Organisation on to 'their' node, but also details about who their Secretary or President etc might be. Example of this can be seen here