I have started doing medium and hard-level puzzles, and have come up with some methods of attack that help once the obvious bits have been solved. Here they are:
1. Mark each cell with all the values it could possibly take (tedious but necessary, and requires a the puzzle to be copied onto a suitably-sized piece of paper unless you are using the program)
2. Now examine each box, then row, then column and look for N cells that share the same N digits. When you find them, then all the other cells in the box or row or column may not use those digits.
For example, if in a row the possible solutions to 2 cells are both limited to 1 or 9, then no other cells in that row may have either 1 or 9 as a solution. These previously possible solutions may be struck out of those other cells , leaving the 2 cells with those 2 digits as allowed solutions.
Another example, if in a column 3 cells have the following possible solutions:
* 1 or 2
* 2 or 5
* 1 or 5
then no other cells in that column may have these 3 digits as possible solutions.
The 3 digits do not have to occur in pairs like that, they could also be arranged in 3 cells as
* 1 or 2
* 1 or 5
* 1 or 2 or 5
So you can see how the general principle arises from these examples.
3. If, in a box, a row, or a column, a cell uniquely holds a digit as a possible solution, then that is the solution for that cell.
For instance, after assigning all possible solutions to all the cells, you find that one cell alone in a row can accept 7 (apart from its other allowed solutions), then that cell must have 7 as its solution.
4. As a cell's value is determined, don't forget to visit all other cells in the same row, column and box to eliminate that digit from their possible solutions
5. As a cell's value is solved, don't forget to check if it immediately solves the value of other cells in the same row, column or box
6. Now repeat steps 2 to 5 until you are done.
Because I am sloppy, I find it useful - after assigning all possible solutions to each cell (step 1) - to go over them again and recheck. I usually find I have allowed to many solutions because I forgot to take a cell's box contents into account. Mistakes like that don't stop you getting to the end of the puzzle, but it slows things down until you catch and eliminate those excess solutions.
If you can't immediately see any step 3 type cells, then do the slow but methodical thing that I do for each box/row/column - go through each digit 1 to 9 and check if it has been solved, or if it is the possible solution to more than one cell in the (say) column. Your ruminations may go like this:
"1 - okay that is solved....2 - hmmm, that is a possible solution to more than one cell in the row I am checking, oh well....3 - errrm, wait a minute! This cell can take a number of solutions, but it is the only one in this row where 3 appears as a solution. Great, ignore its other possibilities, that cell's value must be 3 because no other cell in the row has 3 as a possible solution". And so on. A methodical approach is required with the techniques listed above, but they produce the results.
Using these techniques, there is no trial and error or what-if approaches required, just patient and accurate work. By this method I just solved a hard level puzzle in just under 31 minutes without any feedback from the program at all (i.e. the settings that allow you to get into the program's Hall of Fame).
I did originally put these notes on a blog I have just started up (http://ccx3.blogspot.com/), but I thought that this was a more useful place to put my notes.