Create a vector grid using the "extents from layer" and specifying the grid size. In the example below I've used 10km x 10km grid squares. Make sure to output the grid as polygons, not as lines.
Vector > Research Tools > Vector grid
This will produce a regular grid with the specified extents and cell size:
Next, you need to intersect the layer you want to subdivide with the grid.
Vector > Geoprocessing Tools > Intersect
The result is shown below. I imagine this is what it would look like if you hit an apple hard enough with a tennis racket. Each part of the intersected features will have all of the attributes from the input layers.