The fibre itself is very cheap these days - as cheap as copper really.
For BT to install fibre, they first have to install a (micro)duct. Then they blow the fibre through that microduct. The fibre that is blown through has no real physical protection on it so needs to be blown into its own microduct. This is the same process we used.
The only significant cost is that of the digging. Having said that, I would imagine that installing the microducts into existing (old) ducts is not always that easy and thus not always that cheap.
BT Openreach charges (in its excess construction charges) £3.50 per metre to install the microduct and £4.00 per metre to blow the fibre - both of which really are a complete rip-off (the material cost of each is tens of pence per metre), but hey this is BT

These are the charges we are having to pay to get a BT fibre installed at the moment into one of our areas.