It's expected to cost more than what you'd think it's worth if you're just making one. A significant chunk of the cost is on general stuff: wire, glue, solder, etc.
Possible cost cutting options I thought of:
Since it's only playing one song, you actually wouldn't need the MP3 shield. There are many tutorials online for wav playback on Arduino without a shield and the Arduino can easily read a SD card using a logic level converter ($1, max). The sound quality will be low but it's cheap! Ultrasonic sensors are cheap on eBay, you could also go with a passive IR sensor.
Of course you could build your own Arduino compatible board for about $10 but you'd need a way to program it (ICSP isn't exactly cheap either).