I had the same issue dossolving polygons, the problem was that there were Geometry Errors. Bare in mind my process was a Standalone application, however the concept should help. Before performing the merge I ran
This tool is simply a GRASS tool called v.clean, you can search for it from your processing toolbox. This tool cleans the geometry of the input vector layer, read about this more HERE
If you don't trust the v.clean to solv the problems, You can also use the Check Geometry Validity from fTools plugin, to inspect the file manually, this tool will highlight all geometry errors, enter edit mode to solve the errors by deleting duplicate Nodes, Polygon overlaps etc.
Once the Geometry errors are dealt with the files should merge, dissolve, intersect, without losing features.
Another method I used was the GDAL tools ogr2ogr
To create a file to merge into use the following command. This will take a shapefile and copy it to a file called merge.shp (this filename is up to you).
ogr2ogr -f ‘ESRI Shapefile’ merge.shp filename1.shp
Then merge the following files by using:
ogr2ogr -f ‘ESRI Shapefile’ -update -append merge.shp filename2.shp -nln merge
ogr2ogr -f ‘ESRI Shapefile’ -update -append merge.shp filename3.shp -nln merge
read more here
*Note you need the OSGeo4W shell provided with the For Advanced Users Download * This should help defeat the geometry errors
Hopefully this solves your issue, I remember how frustrating it was with me.