You can attach callbacks to custom properties, but not built-in ones. The only handler that would work here is the scene update handler, but it will call the callback function regardless of changes, and that 20x per second - so not very useful. You can check the particle count in that callback, but it will add some overhead.