I have to do this all the time in bayesplot. The solution I came up with, short of writing a full-on scale function, is:
ggplot(iris) +
aes(x = Sepal.Length, y = Species) +
geom_point() +
scale_y_discrete(limits = unique(rev(iris$Species)))
Edit: I always have the column sorted in my code, so to generalize the solution, it should be:
ggplot(iris) +
aes(x = Sepal.Length, y = Species) +
geom_point() +
scale_y_discrete(limits = rev(unique(sort(iris$Species))))