Subdivide a face into 1 x 1 squares
Step 1: Creating a large mesh of 1x1 squares

There are several ways to accomplish step 1, here's one possibility:  Create a new 1x1 square as a new object.  Use the "Array" modifier to make a row of 1x1 squares, wider than your target object.  Apply that modifier, then use a new "Array" modifier (set to Z offset instead of X) to make multiple rows, taller than the target object.  Apply this modifier as well, and "Merge Doubles" on the resulting mesh of 1x1 squares.

You should end up with a mesh of connected 1x1 squares, that extends larger in all directions from the target object that you hope to cut.

Step 2.  Use Knife Project

With your large mesh selected in Object Mode, shift-right-click on the original target object, to multi-select that.  The target should be "active" selected object, with the new mesh a reddish-orange multi-selected color.  Enter "Edit mode" on the target, with all vertices selected.  Set your view to look along the axis perpendicular to the meshes (typically, numberpad 7, 1, or 3).

Finally, click the Knife Project button in the left margin.  This should cut a batch of 1x1 squares into your target mesh.