Если такая кнопка на сайте одна (например, кнопка "Купить" в промо-блоке) - проще всего её тупо сделать двумя картинками под каждое состояние. Ну или одним спрайтом, но это уже детали.
А вот если таких кнопок непредсказуемо много или текст должен меняться... это сложнее. Есть вариант с SVG
матричными фильтрами (можно сделать так, что фильтр сделает определенный цвет прозрачным) - но это довольно геморно и не совсем кроссбраузерно.