What Are the Best Algorithms for Document Image Thresholding (Example Inside)?
Your image doesn't have uniform brightness,so you shouldn't work with a uniform threshold. You need an adaptive threshold. This can be implemented by preprocessing the image to make the brightness more uniform across the image (code written in Mathematica, you'll have to implement the Matlab version for yourself):

A simple way to make the brightness uniform is to remove the actual text from the image using a closing filter:

white = Closing[src, DiskMatrix[5]]




The filter size should be chosen larger than the font stroke width and smaller than the size of the stains you're trying to remove.

EDIT:
I was asked in the comments to explain what a closing operation does. It's a morphological dilation followed by a morphological erosion. The dilation essentially moves the structuring element at every position in the image, and picks the brightest pixel under the mask, thus :


removing dark structures smaller than the structuring element
shrinking larger dark structures by the size of the structuring element
enlarging bright structures


The erosion operation does the opposite (it picks the darkest pixel under inside the structuring element), so if you apply it on the dilated image:


the dark structures that were removed because they're smaller than the structuring element are still gone
the darker structures that were shrunk are enlarged again to their original size (though their shape will be smoother)
the bright structures are reduced to their original size


So the closing operation removes small dark objects with only minor changes to larger dark objects and bright objects.

Here's an example with different structuring element sizes:



As the size of the structuring element increases, more and more of the characters is removed. At radius=5, all of the characters are removed. If the radius is increased further, the smaller stains are removed, too:



Now you just divide the original image by this "white image" to get an image of (nearly) uniform brightness:

whiteAdjusted = Image[ImageData[src]/ImageData[white]*0.85]




This image can now be binarized with a constant threshold:

Binarize[whiteAdjusted , 0.6]