As far as I know there is nothing to stop the player from using escape to close a dialog. What might work is using a variable to check if the player closed the dialog with the appropriate button. How to incorporate this into your script/mission?
I'll describe one way how to do this, there are much more options. Make a file called "init.sqs" and put it in the mission folder (found under your username/missions). There write the following: dialogclosed=false;
Then the only thing you need to check after opening up the dialog for the player is if he has exited the dialog, if yes, check if the variable is set to true (you can set it to true on the activation line which gets activated after a players presses a button), if not - open up the dialog again.
It has been a while since my last usage of dialogs, I'm about 95% sure that something like this will work. It's just that I don't know how everything has to be set and done. If you need more help, just ask.