Make a square canvas, and create a single square that fills the entire canvas. Then run Layers>Rotate/Zoom with Tiling checked. Reduce the Zoom to some integer fraction (like 0.25 for 4, 0.125 for 8). For better results, use Red ochre's Distort>Aardvark plugin, which has antialiasing. Aardvark also has the advantage that it will by default divide the canvas into an integer number of repetitions. (You might want to set Tiling options to Repeat.) Create the original pattern so the lines run horizontally and vertically. Later on, you can rotate the pattern by 45 degrees to get the final format.
To produce a pattern like the one shown, first create a 3x3 version, then make the modifications for the different patterns, then rerun Aardvark (or Rotate/Zoom) to increase the number of repetitions. Since you want to make a 3x3 version, you will probably want a canvas size that's divisible by 3.
Other plugins that may prove useful are pyrochild's Borders N' Shapes and Chris Vandermotten's Object Align. These plugins will work inside a selection, so you can, for example, use Object Align to center a filled circle shape inside a selection, provided the background is transparent.
(If I were trying to create the design shown, I'd probably first make the square with the border and circle. I then turn it to a 3x3 version and erase (or fill with white) the squares without the patterns. That might be easier than adding the borders and patterns later.)