So I heard about Sudoku, and peeked at it and thought solving these puzzles would be boring, but writing a solver would be fun! Turns out I was wrong about trying to solve them, that's fun, too. But as for a solver, well, I wrote one in Java. It seems to handle all the puzzles I have thrown at it save one, which was given to me with the difficulty rating of "Impossible." If you look at the source code, you can see it as BOARD3.
Feel free to download the source and take a peek at it.
If it turns out that BOARD3 can only be solved with "what-if" scenarios, then I might give it a whirl.