You can create manual links to these modules from your "user account" section, and they will have access to the same modules that you can get in the admin.
Ok I solved it, I thought the answer was in this doc:
http://ez.no/download/changelogs/ez_publish_3_5/ui_context_variables And it was. The ui_context and ui_component variable were the key.
My code:
{def $this_user=fetch('user','current_user')}
{if $this_user.is_logged_in}
{def
$acc1=and($ui_component|eq('user'), $ui_context|eq('edit') )
$acc2=and($ui_component|eq('content'), $ui_context|eq('edit') )
$acc3=$ui_component|eq('notification')
}
{if or( $acc1, $acc2, $acc3 ) }
<ul>
<li><a{if $acc1} class="current"{/if} href={concat('/user/edit/', $this_user.contentobject_id)|ezurl}>{'My Account Details'|i18n("design/ccts")}</a></li>
<li><a{if $acc2} class="current"{/if} href={concat('/content/edit/', $this_user.contentobject_id)|ezurl}>{'Change Account Details'|i18n("design/ccts")}</a></li>
<li><a{if $acc3} class="current"{/if} href={'/notification/settings/'|ezurl}>{'My Notification Settings'|i18n("design/ccts")}</a></li>
</ul>
{else}
{* context and component don't match so don't show the menu *}
{/if}
{undef $acc1 $acc2 $acc3}
{else}
{* this user is not logged in so don't show them anything at all *}
{/if}
{undef $this_user}
I know there may be a cleaner way to do this, but it works for now, if anyone has any ideas how I might simplify this code please make a suggestion.