Técnicamente sería posible, pero como no se puede usar en el ORDER BY otra cosa que no sea un nombre de columna o número de orden (numero real), deberías hacerlo con lo que se llama "sentencias preparadas".
Dale una leída al tema y luego vemos los detalles:
http://dev.mysql.com/doc/refman/5.0/es/sqlps.html
La posibilidad que mencionas (CASE o IF... THEN), implicaría que deberías escribir un SELECT con su correspondiente ORDER BY por cada opción de orden a conseguir. Es posible, pero algo impráctico para la codificación.
Ten en cuenta que en MySQL no existen los SELECT de ejecución condicional.