лучше через маску, но если попроще, тобишь таки через png, но чтобы "просматривалось" - картинка на весь слой, представляющая из себя дырку окруженную фоном.
вариант с заливкой фоном и картинкой, предложенный выше, подходит только для статичного положения кнопки относительно фона, да и делается не легче. из-за размера такой картинки переживать, думаю, не стоит.