You might be looking for Cascading Lookup.
There are several of these, like the one on CodePlex, and Mark D have made support for it in his SPServices (SPCascadeDropdowns).
Update:
If you want a very quick and dirty solution you could do this:
By using SPFieldChoice and prefixing the values with previous values like this:
- Choice Country
- Choice City
- Norway - Oslo
- Norway - Ålesund
- Sweden - Stockholm
You can use jQuery to filter them like this:
var $fields = $('.ms-formbody').filter(function() {
return $(this).html().match(/spfieldchoice/i);
});
var $s = $fields.last().find('select');
$s.find('option').each(function() {
var $o = $(this);
$o.text($o.text().replace(/.* - /, ''));
});
var $c = $s.find('option').clone();
$fields.first().find('select').change(function() {
var val = $(this).val();
$s.empty().append($c);
$s.find('option').filter(function() {
return $(this).val().indexOf(val) < 0;
}).remove();
}).change();