It's because of the bit depth you're using in your file.
For short, you're using a 8bit depth picture, which is limited to 256 levels of shade for each red, green and blue channel. It's enough data for display on internet, but it's quickly limited in CGI.
When you create a picture in blender to bake your normal map in, make sure to check the "32 bit Float".
Then when you save your picture, you need also to use a format that supports all this data. You can check this in detail in this Blender manual page, but just keep in mind that usually internet-friendly picture formats like jpeg or png don't support that and the best option in Blender will be Open EXR with full color depth.
Then, you can use this as-is. It's heavier though, so if storage usage is a concern, there's a little trick you can do: convert that 32bit into a 8bit dithered. Basically, you would still be in 8bit with not enough data to make correct normals, but the dithering of values will make it less perceptible. If used well, it might not even be noticed.
More detailed infos and how-to's in this CG Cookie video: