This is fairly simple and you can do it all natively in QGIS (i.e.without exporting to PostGIS).
- Convert you polygon to lines (Vector->Geometry Tools->Polygon to lines)
- Convert the lines back into polygons (Vector->Geometry Tools->lines to polygons)
- Difference your new polygons against the original polygons
Step 2 is the key here. Step two creates a set of overlapping polygons, one of which represents your landmass with no holes and the others are your lakes. Step three kills the landmass polygon leaving just the lakes.
I vaguely remember a thread where somebody was asking how to de-doughnut polygons. You could use this same approach but instead of differencing your result with the original, simply dissolve the result, or do a spatial join and then select by attribute if dissolve is too crude... anyway, that's getting off-topic.