Yes. There are extremely efficient ways to break a linear congruential generator.
A linear congruential generator is defined by sn+1 = a sn + b mod m, where m is the modulus. In its simplest form, the generator just outputs sn as the nth pseudorandom number. If m is known to the attacker and a, b are not known, then Thomas described how to break it.
If none of a, b, m are known, one can still break a linear congruential generator, by first recovering m. It is an interesting exercise to derive how to do so efficiently; it can be done. I'll show how below; don't read on if you prefer to try to figure it out for yourself.
To recover m, define tn = sn+1 - sn and un = |tn+2 tn - t2n+1|; then with high probability you will have m = gcd(u1, u2, ..., u10). 10 here is arbitrary; if you make it k, then the probability that this fails is exponentially small in k. I can share a pointer to why this works, if anyone is interested.
The important lesson is that the linear congruential generator is irredeemably insecure and completely unsuitable for cryptographic use.
Added: @AviD will hate me even more :), but here's the math for why this works, for those who requested it.
The key idea: tn = (a-1) sn mod m, and tn+1 = (a-1)2 sn mod m, and tn+2 = (a-1)3 sn mod m. Therefore tn+2 tn - t2n+1 = 0 mod m, i.e., |tn+2 tn - t2n+1| is a random multiple of m. Nifty number theory fact: the gcd of two random multiples of m will be m with probability 6/π2 = 0.61; and if you take the gcd of k of them, this probability gets very close to 1 (exponentially fast in k). Is that cool, or what?