Yes they are lost for good. The currency is divisible to 8 decimal places and potentially further if there is a significant need and a code change. So the currency can adapt in its silly way.
Bitcoins are not "infinitely divisible" as a lot of people will say though. A hard fork of the code is required to add additional decimal places. This is not a simple matter in the least.
What is the limit on the potential divisibility that you admit exists?
The value isn't stored in the blockchain as a decimal at all. It is stored as an integer. The client just creates a decimal 8 places to the left when it displays it to you. The client can be modified to create that decimal less places to the left if desired (display in mBTC or uBTC rather than BTC), but none of that changes how the value is actually stored.
As I understand it, to change how much the value represents will require changing how the value is stored in the blockchain. Potentially you could have some miners storing their newly minted coins in the old format, and some storing them in the new format if they don't all upgrade simultaneously. The upgraded wallets would recognize the new format as valid, while those people who don't upgrade their wallets in time would see the old format as valid. This would split the blockchain into 2 types of bitcoin.
Technically the blockchain doesn't store values it stores unspent outputs. While all unspent outputs are currently in the same format it would be possible to have new "high precision" addresses which say store Bitcoins in a new format. This new format would only be used on new addresses.
The migration process would be similar to P2SH:
1) Hash out the details, test, debate, etc.
2) Request miners put a tag in the codebase of solved blocks indicating they support the protocol change.
3) When sufficient majority of miners support the change (I think Gavin looked for 80% in P2SH) release a new version of the client.
4) The new version(s) of the client have a changeover block coded into the client. The client would have the ability to support the new address type but it would reject them as invalid if seen prior to the changeover block.
5) On the change over block the new address type would be supported.
At that point older nodes (both miners and non-miners) would be forked off. The main main chain seen as the longest by upgraded nodes would be seen as invalid by them (they would see the new high precision addresses as invalid txs). As long as they represent a minority there is no real harm. They simply need to upgrade to the new version. There is no issue of their client's being "confused" (showing wrong amounts, etc) they simply would reject block & tx involving the new incompatible address.
It worked well with P2SH and IIRC Gavin brought up some ideas that would make future transitions easier (like coding a version number into the blocks & clients so that client would warn users when they see a future incompatible version on the network.
Since Bitcoin doesn't store values it stores unspent outputs (which are used as a single unit) it is possible to support newer high precision addresses while at the same time also supporting "legacy" addresses. User could keep using their old addresses or have a new version of the client generate a new address for them and move their funds to the new address.