I have successfully implemented a simple pathfinding routine as described in this Wikipedia article:
I used the "sample algorithm", which starts at the endpoint, words across the grid by hopping to adjacent cells, counting the hops as it goes, and then using the number of hops to track the path back from the start to the end point. It works well, and is fairly fast.
The only problem I have is that the loop for calculating the path never breaks if there is no route to the destination (i.e. if the path is blocked).
I have considered limiting the number of rounds for the calculation; the maximum possible steps on the board will be (rows*columns)-1, so in a 10*10 grid, if a path hasn't been found within 99 rounds, there is no path. However, this could be very wasteful, for example if the start point is within a very confined space with only a few possible moves around it.
I'm writing in Cocoa + Objective-C, but I wouldn't have thought that makes a difference, as this seems to be a logical issue rather than one regarding the framework I'm developing in.