I was also trying to find an answer myself of course. And it's been some time already that I did find a quite acceptable solution.
And yes, Sam, using EWS (Exchange Web Services) is exactly what can help here, as you correctly pointed out. Actually, EWS is what my solution is based on.
So, part of EWS is the notion of Event Notifications. And that's it. As simple as it is. It's only that such notifications cannot contain any valuable information besides the item ID. Because in case the item has been updated I'd like to know the delta. And if I don't get it, I have to retrieve it. But that's not a huge deal after all, since EWS allows me to easily retrieve the delta by the ID.
As to how to utilize EWS, there's EWS Managed API, for example, that offers a handy client.
(However I must say that I haven't implemented the described solution yet. I'll do it a bit later. Therefore all I've written here is mainly from a theoretical point of view.)