I'm no Lisp Guru, but this worked in my minimal testing. Modify the quoted layer names to be in the order you want them displayed. You type "LAYORDER" to run it. Let me know if it doesn't work (but like I said, I'm no guru).
;;Send to Front by Layer
;;
;;Inspired by this post:
;;http://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/layerorder-then-okay/td-p/6537304
;;
;;By Steve Carson
;;
(defun C:LAYORDER ( / layerlist SS)
(setq layerlist '(
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;Create List of Layers in the order you want them displayed
"Layer1"
"Layer2"
"Layer3"
"Layer4"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;End of Layer List Area
))
(foreach L (reverse Layerlist)
(if (setq SS (ssget "_X" (list (cons 8 L) (cons 410 (getvar "CTAB")))))
(command "DRAWORDER" SS "" "Front")
)
);foreach
(princ)
);defun