Die Beschaltung ist demnach so weit OK und das Problem liegt an deiner Spannungsversorgung.

Im Prinzip müsstest Du über einen Shunt den Motorstrom messen und bei Überstrom den aktuellen Duty-Cycle so weit zurückfahren, dass der maximalstrom nicht überschritten wird. Wenn dein PIC einen Komperator hat, kannst Du den sehr gut dafür verwenden. Der Shunt (5..10mOhm) kommt zwischen Fet und Masse und das Signal koppelst Du über ein RC-Glied (z.B. 1K + 10nF) aus und gibst es auf den einen Eingang und für den anderen generierst Du dir die Vergleichsspannung.

PICs mit einem sogenannten Power-Control PWM Module können das übrigens vollautomatisch ohne jegliche Software. Ist eine feine Sache. ich steuer damit einen 250W Motor (>50A Blockierstrom). Strombegrenzung liegt bei 25A.

[Edit]

Ääähhhhmm, das wichtigste vergessen, eine Freilaufdiode (sollte ebenfalls mindestens den Maximalstrom vertragen) hast Du antiparallel zum Motor?