2
           
            
                
     
    
    I think you can hide (disable) the blocks for Anonymous Users. I believe you can control that in either the blocks or Groups control panel.
Now, if what you are saying is that in a module, like the forum, they are clicking on a users name and that leads to the user profile... the only thing I can think of is to modify the template to do a check to see if the user is signed in before it makes it an active link.
In my theme, I have a test to see if a person is signed in (and a further test to see if they are admin). Unfortunately, I think the syntax might be slightly different in templates (though I could be wrong).
Perhaps another helper will jump in to make the legit for templates (unless it already is). I think smarty requires it to be written differently.
Anyways, here's what I have in my theme... perhaps it will serve as a starting point for you. Obviously you would need to modify it, turning off the 
 and  for people who are not signed in.
 <{if $xoops_isadmin}> 
        <a href="<{$xoops_url}>/admin.php">Administrationa> |  
      <{/if}> 
 
    <{if $xoops_isuser}>  
     <a href="<{$xoops_url}>/signout/">Sign Outa> |  
     <a href="<{$xoops_url}>/myaccount/">My Accounta> |  
 
    <{else}>  
      <a href="<{$xoops_url}>/myaccount/">Sign Ina> | 
    <{/if}>