IPN.php est appelé quelques second après le paiement par les serveur de paypal (donc en théorie cela peut même mettre un peu plus longtemps), donc quand l'utilisateur paye et est renvoyé sur ton site, paypal n'as pas encore appelé IPN.php (et en plus la session paye appartient a la machine qui a appelé la page : le serveur de paypal, et non le client).
cependant il me semble que lorsque la transaction se passe bien, l'utilisateur est renvoyé sur une page success (que tu peut préciser dans les config ou dans les variable caché, ici tu a mit http://monsite.com/paypal/test.php il me semble)
donc tu peut faire en sorte que quand l'utilisateur arrive sur cette page, tu lui dit que la transaction est en cours de traitement et qu'il recevra une confirmation par email par exemple (email qui peut etre envoyé par php dans la page IPN.php).
Il me semble que tu peut aussi en php faire un appel vers paypal pour savoir si la transaction a bien était effectué et donc lui dire le résultat dans cette page grace a cette méthode, ce qui est sur c'est qu'IPN.php est appelé par paypal (et donc les session ne servent pas)