Well first off I would reccomend using tinyint instead of set for the field, second I would allow for NULL values and then if its not a feature it would be NULL. Then you could do:
$sql = "SELECT * FROM sale_items WHERE gallery_name = 'CoolName' ORDER BY IFNULL(feature,10) ASC, image_id DESC LIMIT $startRow,".GALMAX
I just tested it with this table:
CREATE TABLE IF NOT EXISTS `feature` (
`image_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`feature` tinyint(1) unsigned DEFAULT NULL,
PRIMARY KEY (`image_id`),
KEY `feature` (`feature`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;
INSERT INTO `feature` (`image_id`, `feature`) VALUES
(1, NULL),
(2, 1),
(3, NULL),
(4, NULL),
(5, 2),
(6, 4),
(7, 7),
(8, NULL),
(9, NULL),
(10, 9),
(11, 8),
(12, NULL),
(13, 3),
(14, 5),
(15, NULL),
(16, 6);
and this query:
SELECT * FROM feature ORDER BY IFNULL(feature,10) ASC, image_id DESC LIMIT 0,20
Hope that helps!
PS. I would suggest listing all the columns you expect data from instead of using SELECT * syntax.