IP rating is IMHO critical. If people start relying on it to live their life, getting it killed by unpredicted rain or an accidental water splash will be quite a shock.
Battery life could be worked around if they're really that much of an improvement in day to day use. Even buying two or three pairs to go through a full day could be a worthy tradeoff if they don't need to pair to anything. Cost could be an issue, but 2 or 3 of them would still be cheaper that many hearing aids for instance.
Software Engineers (a large portion of HN community) inherently have a hard time with this. We're always taught to consider edge cases. Oftentimes handling the edge cases can be more work than the rest of the project.
But when we handle them, we give ourselves a pat on the back, without thinking can I just ignore the edge case and shrug if someone runs into it?
In the case of the OP, the edge case is the occasional user who might want to project their exact costs.
I think a good example of this concept is the foreach command in Tcl: It's quite flexible compared to list iteration constructs found in most languages.
This is normal usage:
foreach x {1 2} {puts $x} => 1 2
You can iterate over two lists at once:
foreach x {1 2} y {3 4} {puts $x $y} => 1 3 2 4
Instead of reading one element from the list, you can read multiple:
If any of the lists happen to run out before the others, instead of complaining it just returns empty elements.
Many commands in Tcl give the impression that they can be used in many different ways, so writing a program in Tcl feels like building a structure by creatively assembling a limited set of legos.