Я думаю, смотря что хочется ловить. Тем более, что далеко не все свойства KV-Observable.
Если хочется отслеживать изменения через сеттеры, можно попробовать перегрузить methodForSelector: или же сделать method swizzling на него. Там определять какой селектор зовется, если начинается с "set", то предполагается изменение значения. Вызываем свой обработчик, вызываем оригинальный метод.
Расскажите-ка поподробнее о задаче, будет проще ответить более конкретно