If I am understanding you:

    x : {{__} ..}

See [Repeated](http://reference.wolfram.com/mathematica/ref/Repeated.html) for more information and additional options.  Also see [RepeatedNull](http://reference.wolfram.com/mathematica/ref/RepeatedNull.html) while you're there.

Make sure you understand [BlankSequence](http://reference.wolfram.com/mathematica/ref/BlankSequence.html) and [Pattern](http://reference.wolfram.com/mathematica/ref/Pattern.html) as well.

----------

Here is a breakdown of the expression above.  First let us view the `FullForm` which is as close to the way *Mathematica* sees it as possible:

    FullForm[ x:{{__}..} ]

>     Pattern[x,
      List[
        Repeated[
          List[
            BlankSequence[]
          ]
        ]
      ]
    ]

This expanded form is useful to remove any ambiguity in *Mathematica's* parsing.

Therefore from the inside out we have (`short form` : `long form` : description):

`__` : `BlankSequence[]` : one or more arguments with any head

`{ }` : `List[ ]` : inside the head `List`

`..` : `Repeated[ ]` : one or more arguments matching the given pattern

`{ }` : `List[ ]` : inside the head `List`

`x:` : `Pattern[x, ]` : a unique expression that matches the given pattern, named `x`

Pay attention to this last point: naming the pattern changes the way it behaves, such that it represents a unique expression.  Consider this superficially similar pattern:

    x : {{a__} ..}

This will only match e.g. `{{1, 2}, {1, 2}, {1, 2}}` but *not* `{{1, 2}, {3}, {4, 5, 6}}` because by naming the first sequence `1, 2` all other sequences must be identical.  Simply matching the pattern `a__` independently is not enough.