As Sridhar comments below, from Git1.6.5+, git clone --recursive is now the official alternative, described in: 
inamiy correctly points out the git submodule update --init --recursive command, introduced in commit b13fd5c, again in git1.6.5, by Johan Herland (jherland).
And IceFire adds in the comments:
If you would like to checkout only one submodule of a submodule, then
git submodule update --init <submoduleName> is the way to go.
(older original answer)
According to the manual page
 git submodule update --recursive
should update any nested submodules. But the init part may not be recursive.
Depending on your version of Git, you could fall back to a more "scripting" approach, with this article Recursively Updating Git Submodules which allows for recursive init and update:
#!/usr/bin/perl
use strict;
use Cwd;
init_and_update();
exit;
sub init_and_update
{
    my $start_path = cwd();
    my %paths;
    my $updated;
    do
    {
        my $data = `find . -name '.gitmodules'`;
        chomp($data);
        $data =~ s/\/\.gitmodules//g;
        foreach my $path (split(/\n/, $data))
        {
            $paths{$path} = '' if($paths{$path} eq '');
        }
        $updated = 0;
        foreach my $path (sort keys %paths)
        {
            if($paths{$path} eq '')
            {
                chdir($path);
                `git submodule init 2>&1`;
                `git submodule update 2>&1`;
                chdir($start_path);
                if($ARGV[0] eq '--remove-gitmodules')
                {
                    unlink("$path/.gitmodules");
                }
                $paths{$path} = 1;
                $updated++;
            }
        }
    } while($updated);
}