Mher replied with what should have been an obvious solution but I was stuck thinking inside of the options for geom_dotplot, but geom_point works great! Thanks! What he suggested is:
ggplot(mtcars, aes(x = factor(vs), y = mpg)) + geom_point(aes(shape=factor(cyl)), position=position_dodge(width=0.3), size=3)