How to lock one (or more) layers in Eagle?
There is no way that I know of to "lock" a layer, but if a layer is hidden, it can't be selected.

Before you select what you want to select, enter the command display none &lt;layernum&gt; where &lt;layernum&gt; is the layer (or layers) you want to select (e.g. 21 is Dimension I think) - space separated if there are more than one.

Then you can select using the group tool what you want.

After selecting, you can enter the command display last to show all layers that were hidden by the first command.



As an alternative, if you are making complex shapes that are not to be electrically connected (e.g. stuff on the dimension layer or silk screen), I find it is much easier to create a library for it. 

I have for example a generic library for logos which have been imported with the import-bmp and import-dxf ULPs. These end up being quite complex shapes that are a pain to select in the layout, but if they are in a library, you can just place the footprint directly in the layout editor (no need to add it to the schematic).

You can do the same for board outlines. Some cases, e.g. those from Hammond, give you a recommended PCB size with mount hole locations and notches in various places. I find it easier to draw this up in a library (I used the holes library, but you can make one of your own). This way moving it around in the layout is easy (just drag it around like any other part), and reuse in other designs is easy too. Plus it ensures you don't accidentally resize it.

The other advantage is that once they are a library part, you can actually lock the instance when placed in the layout. This prevents it from being selected and moved (handy for the board outline mentioned above).