Forces loyal to Libya's Government of National Accord (GNA) announced the launch of the battle for Sirte, 450 kilometres (280 miles) east of Tripoli, on May 12.
Within weeks, GNA forces recaptured large chunks of the coastal city that IS jihadists had seized in June 2015 as a staging post for an expansion into North Africa.
But they have failed to dislodge the last pockets of IS fighters, holed up in the fiercely-defended district of Al-Giza Al-Bahriya, in a costly battle that has left at least 667 dead and 3,000 wounded in GNA ranks.
"The final assault is being held up... mainly due to the fact that it will result in very intense street fighting and Daesh (IS) is determined to defend its positions right down to the last square metre," Rida Issa, spokesman for the pro-GNA forces, told AFP.
Ethan Chorin, a former US diplomat posted in Tripoli and now a consultant, has another explanation for why the assault, which is backed by American air strikes, has got bogged down.
"Those fighting ISIS in Sirte with Western backing are not all motivated, nor are they highly organised," he said, using another acronym for IS.
But Issa said loyalist forces were taking a step-by-step approach to the recapture of Sirte to limit casualties, not only in their own ranks but also among civilians "who Daesh are using as human shields" and whose numbers are unknown.
As for IS, the jihadists do not disclose their casualties but Issa gave an estimate of between 1,800 and 2,000 dead.
On Wednesday, the US military announced a resumption of anti-IS air strikes in Sirte following a one-week break, as part of an operation launched on August 1 in support of the GNA that has totted up 368 raids.
Signup to our newsletter and follow us on Facebook and Twitter!
- Cries of civilians -
With the jihadists now encircled in an area of less than one square kilometre (less than half a square mile), "it is unclear what the impact of (further) air strikes would be", said Mattia Toaldo, a Libya expert with the European Council on Foreign Relations.
"The battle has taken longer than expected for a number of reasons: first they have encountered more resistance than expected... they suffered more casualties and eventually started to feel war fatigue," he said.
"Most importantly, in the very last stages it has become clear that ISIS holds several hostages, which makes attacking the last buildings they control more tricky."
Issa said GNA troops could hear "the cries of civilians every time a strike is carried out" but he did not know their number, only that IS had entrapped them.
IS's ouster from Sirte would deal a heavy blow to the jihadists, who have been left reeling since the start of the year by a string of military defeats in Syria and Iraq.
Those jihadists left in Sirte appear determined to fight to the death rather than be taken prisoner, often carrying out car-bomb attacks wherever pro-GNA forces are gathered in numbers.
"This is not an easy battle... because we are fighting against an armed radical ideology in which death is an aspiration. We very soon realised the complexity of this battle," said Issa.
"Such an enemy can only be wiped out once all its fighters are killed. And that's what we are doing... For sure, this battle has gone on too long, but this is war, not a football match."