Bucle en espiral

Un amigo necesitaba un algoritmo que le permitiera recorrer los elementos de una matriz NxM (N y M son extraños). Se me ocurrió una solución, pero quería ver si mis compañeros SO'ers podrían encontrar una solución mejor. Estoy publicando mi solución como respuesta a esta pregunta. Salida de...