Carrie and I went to Half Price Books the other day and I bought a bunch of crap, which is kind of dumb because I'm moving, but I could not resist. One of the things I got was Switchback by Binary Arts (now Thinkfun). As far as I can tell, nobody has tried to analyze this puzzle. I have a preliminary implementation which uses ncurses as I wanted to prototype something quickly. (It was a lot easier than writing a full-fledged GUI app.) I could post it if anyone is interested.
Basically, the way the game works is: you have this checkerboard pattern with some balls and empty spaces in the black squares and blockers in the white squares with an extra column of blockers squares to the left, but you can also individually shift the rows of the checkerboard. Each row can initially be shifted one space to the left (they only have a total range of two spaces). The unseen column to the right is also filled with blockers. (I'm not sure whether I want to make the unseen blockers visible in my version.) At any given time the board is either tilted up or down and the balls roll accordingly.
In the physical version of the game it is very tempting to jiggle the balls at times to get them to go where you want in a nonuniform manner. The rules explicitly allow this (!), but I wanted a version of the game where it was impossible to do this.
On the left is the initial state and on the right is a state I got into after some number of moves to show that you can in fact move balls past each other: