Asterisk is very particular about the file formats it will use for Music On Hold. After trying a lot of applications, I finally found a solid method to convert files to work with it. You will need the ffmpeg software package, which is available in most distributions (Ubuntu, RedHat/Centos via atrpms or rpmforge, etc).
ffmpeg -i [input filename] -ar 8000 -ac 1 -ab 64 [output filename]
Your resulting file will be exactly what Asterisk needs to play it.