MySQL ha una sintassi non documentata per ordinare i null per ultimi. Metti un segno meno (-) prima del nome della colonna e cambia ASC in DESC:
SELECT * FROM tablename WHERE visible=1 ORDER BY -position DESC, id DESC
È essenzialmente l'inverso di position DESC
posizionando i valori NULL per ultimi ma per il resto uguali a position ASC
.
Un buon riferimento è qui http://troels.arvin.dk/db/rdbms# select-order_by