Algo muy preciso, fácil de implementar, pero lento, es colisión pixel por pixel.
Recorre la imagen de la pelota pixel por pixel, para cada pixel comparas con su posición correspondiente en la imagen del laberinto, si en algún momento encuentras que los colores del círculo que representa al jugador coinciden con el de las paredes del laberinto, es que ha habido una colisión.
Como dije, es fácil de implementar, pero muy lento para un juego porque se está perdiendo mucho tiempo en hacer la verificación pixel por pixel, pero aún así, podría ser aceptable para tu juego, ya que no es tan complicado

.
Hay varias formas de intentar optimizar esto, una es la que lacabra mencionó, extendiéndola, podrías representar al jugador con un cuadro (solamente para las colisiones), las paredes del laberinto como un conjunto de cuadros, checas si hay colisión entre dichos cuadros y, si la hay, entonces haces la verificación pixel por pixel. Es decir, sigues usando la colisión pixel a pixel (que es necesaria por la diferencia de formas círculo - cuadrado), pero no la ejecutas tantas veces.
En esta página encuentras un poco de información básica sobre colisiones en 2D:
http://www.vb-mundo.com/Deteccion-Colisiones-2D.asp
Suerte.