My first question is why do you think you are more qualified than they to estimate how long something will take. You proudly profess your inexperience in the area but then somehow you know better. Please don't take offence. It's bad enough that developers get that from managers who should know better. Far worse from someone who freely admits their inexperience.
That said, there are ways to mitigate the chances that a job will run too far over time or budget. There should be numerous deliverables on the way and the job as a whole should be broken down into units small enough that you can track progress easily.
Sometimes that means no single task in the job should take more than, say, 5 days.
That way, if one task takes 15 days, you see a problem immediately and have the option of changing requirements, invoking penalty clauses, adding staff, firing the idiots who quoted and so on. All this in a timely fashion.
No job should be of the type "we'll deliver the finished product in four months" simply because you're likely to get to the four-month deadline and discover it's only half-done.
The other advantage that this confers is that it gives you more accurate TTC (time to completion) and CAC (cost at completion) figures. If you find that your developer is taking 20% longer on average with all the tasks, you can remain optimistic and still assume the remainder will be okay (in which case your TTC will be the work left and CAC will be the cost to date (20% over) plus TTC cost).
You can also assume they will be 20% over for the rest of the work as well, so TTC is 20% higher than estimate and CAC overall is 20% higher.
How you decide to estimate is not relevant. But it's the fact that you have hard data at hand which allows you to intelligently estimate work. And, if you've spent 50% of your budget and only 3% of the work is done, you have the nuclear option of cancelling the whole thing before it drains all your resources.
That's basic project management and has nothing to do specifically with IT. It applies everywhere where there's a lengthy effort to build some "product". Other things you can do are to tie progress payments to the deliverables themselves (and ensure the contract states that the deliverables have to meet the specs).
But this is all the stuff that should have happened before the work started. It may well do you no good in your current situation, although you could start insisting that some form of progress be shown or payments will be withheld (or the whole project cancelled). Provided you have that power, this will often convince the developers to play ball.