WMI isn’t an “alerting” system. You could potentially have WMI trigger an event that notified your own code, sure. And I’d strongly recommend that it be a service, yes - services are designed to run in the background. But that means not writing it in PowerShell, as PowerShell is not designed to run as a continuous service. And no, Workflow isn’t designed for this, either.
I’m a little confused, though, because since at least Windows 7, there’s been a task bar alert when this happens, right? I’m guessing your users just aren’t noticing that.
In any event, I don’t personally feel PowerShell is a good solution for this. It’s going to be a kludge at best, and an ugly kludge at that. At worst, it’ll end up being a memory hog (remember, PowerShell fires up a good portion of .NET, which is a little lazy about memory).