Este é, infelizmente, um problema muito difícil. Então, no caso geral, a resposta é infelizmente não. Olhando para $ DISPLAY não é suficiente, isso significa apenas que existe um servidor X local de alguma forma (como o xrdp), não que o usuário esteja fisicamente na máquina.
A única opção que eu conheço é o ConsoleKit, que tem um atributo "is-local". Infelizmente eu não conheço nenhuma maneira fácil de verificá-lo a partir de um script de shell. Você pode fazer algo usando "ck-list-sessions".
Observe também que houve um bug em um ponto em que você poderia facilmente pensar que uma sessão remota era local.
Se a segurança não é tão importante, sugiro verificar se o xrdp define algumas variáveis de ambiente especiais que estão presentes apenas para esse tipo de sessão. Basta executar "env" em um terminal e você verá o que está disponível.