The only way to stay independent of ELMAH is to simply add its logging module to your configuration and let it do its job of logging uncaught exception. Signaling was added due to popular demand where people wanted to explicitly invoke ELMAH's pipeline for filtering, logging, mailing and what not for a given error. Signaling allows you to take an explicit dependency on ELMAH but remain independent of how ELMAH is currently configured. I'm not so sure how this explicit coupling can be removed generally without you creating an abstraction within your own solution to insulate it from the dependency on ELMAH.
Do you have any suggestions?