This is entirely a legal question. I'm a first year law student.
The first question is whether the GPL is a legally binding contract. I don't know of any cases that have tested it in court. Nevertheless, unless the old theory of "consideration" is applied in a formalistic manner, the GPL will most likely be a legally binding contract. Consideration typically requires an exchange of money, but the exchange of something else (like source code) should constitute consideration. More progressive courts will not require a contract to have consideration.
The second question, more pertinent to the point you raise, is whether a company that refuses to release GPL source code modifications can be legally forced to release the modifications.
This question has two component parts. Initially, is there any length of delay (as above) that would constitute an abuse of the rights afforded by the GPL? This is the substantive part of the question. Secondly, would anyone have standing to sue? If not, the whole issue is moot. This is the procedural component.
The substantive component can be answered affirmitavely. At some point, the delay would become obnoxious and unreasonable. The test the court would probably apply would be common industry practice. How long do other companies take to release their source code? Coupled with a factual finding that a company's failure to release source does constitute an unreasonable delay, this legal approach could lead a court to force a company to release its source code.
As for the procedural part of the question, no obvious person has standing to sue. Arguably, however, the persons and companies that developed the GPL code that was later modified by the company might have standing to sue. This theory hinges on identifying the release of source as a duty to be entered upon acquiring source (entering the contract), and identifying access to modified source as a right gained upon releasing new GPL source (executing the contract, or starting a new GPL contract).
The difficulty with this approach is charting which piece of GPL code belongs to which developer. We would need to create "family trees" of GPL code.
If the approach was legally successful, however, there would be identifiable parties with standing to sue. Presumably, at least one would be willing to undertake a lawsuit to enforce the GPL and procure access to the source. This access would be public, of course, following the GPL.
As a first year law student, I took Contracts last semester. If you need real legal advice, I strongly suggest seeking out a real lawyer. If you don't know of one, I could probably refer you to a good one.