Very good point from Samuli: ICM or Web Dispatcher needs to be restarted whenever custom error files are added or removed. Modifying the content of a custom error file however does not require a restart.
If you still have troubles, increase the trace level to 2 before triggering the error for the first time, then check dev_icm or dev_webdisp for lines similar to these:
HttpPlugInWriteErrorText: check for error templates in "."
HttpPlugInWriteErrorText: use template "./ICMERR-EPERM.shtml"