How about measuring flow rate over a period of time, instead of acoustics?
An icemaker, or a toilet refilling should be a pretty low rate of flow, and also shouldn't go for more than 1 minute.
A burst washing machine hose, pipe, etc, on the other hand, would have a high rate of flow and go on forever.
If you could get a measurement of flow rate, (which must be possible as most water meaters are now read remotely), combined with time of day/day of week and occupancy should result in the computer being able to make a pretty good guess about whether or not to shut down the main. Some paramaters would probably have to be tweaked over time for each home, and providing an override function to turn the main on or off, or tell it not to shut off, regardless of what it thinks should be done would be nice too.
I don't care much for the detectors on the market today, for the reasons mentioned by Robert. I can say I'd rather have one valve on the main that occasionally gave me a nuisance lock out, if it also one day shut the house down when a pipe burst vs individual gizmos for each toilet/sink/etc.
To counter the loss of power problems, after the program was written, it could be burnt onto an eprom.... hell there are entire PC's now the size of a cell phone; from there it's just a matter of providing an API to interface with via a PC. Keep the logic on the eprom, and let the user tweak paramaters via an API.
I'd make the entire valve/logic board all in one unit; and put a battery back up on it. Say, a battery about the size of one found in a residential alarm system.