Ciao, questa e' una chiamata diretta
codice:
  $(document).ready(function(){
                if(set_session()=="loaded"){
                    //Fa qualcosa
                }else{
                    //Fa qualcos'altro
                }
            });


Il risultato di set_session() puoi averlo solo dopo che la chiamata ajax/post ha terminato e quindi verificabile in .done().
Non puoi quindi cercare di far ritornare a set_session() un valore subito perchè non sai quanto ci metterà a completare la richiesta.
Questo in di controllo lo devi gestire all'interno di done() o errror()
Questo codice che hai messo in done
codice:

codice:
if(data.allowed =="true"){
                        $("#content .loading .operazioni").append("<br /><span style=\"color: green\">Sessione creata con successo</span>");
                        status_session ="loaded";
                    }else{
                        $("#content .loading .operazioni").append(session_error);
                        status_session ="not_loaded";
                    }
equivale al controllo che vuoi fare inizialmente. Va gestito da qui ( o puoi comunque richiamare una funzione per separare nel caso il codice).