First, consider the age of your home because the older it is, the more likely you might fight a hidden issue that wasn't revealed until some drywall is taken down. Also, plumbing and electrical outputs may need to be updated especially if you want to add in new ones and lighting fixtures. The key here to saving money is finding a contractor that has experience with older homes because they can estimate more accurately.
Second, you could ask a neighbor who's had a recent remodel if they had any unforeseen issues. When homes are built in neighborhoods all at once, they are of the same age. Plus it gives you an idea of the cost that could appear above your budget for things they didn't expect.
Third, know exactly what you need in your project. Note how I said need, instead of want. It'd be best to make a list of your "must haves" which include lighting/electrical needs and spatial needs. This way you won't be strayed away by unneeded additions that can cost more than you planned. See if the "needs" fit within your budget first. Then you can review the "wants" and don't forget to have extra left over for the "unforeseen".
Remember, the contract is based on an estimate. There is no way to exactly know how much it's going to cost because of these factors. If you have a good contractor, then they will be a good estimator, educate you along the way and keep you posted on any changes that come up.
If you have any questions, comment and we will get you answers!