This is an old thread, but for people who find it -- the solution to getting changes to apply immediately for the current user is to clear the user's attributes with code like this:
$userId = $modx->user->get('id');
unset($_SESSION["modx.user.{$userId}.userGroups"]);
$context = 'web';
$targets = explode(',', $modx->getOption('principal_targets', null,
'modAccessContext,modAccessResourceGroup,modAccessCategory,sources.modAccessMediaSource'));
array_walk($targets, 'trim');
$modx->user->loadAttributes($targets, $context, true);