string key = "User";
string name = "Bill";
if (billList.ContainsKey(key))
{
    string result = billList[key];
    if (result == name)
        return result;
}
return null; // key and names did not match
A Dictionary will never have more than one occurence of the same key, so I wonder if you shouldn't be using a Dictionary<string, Bill> instead, in which case the code would look more like this:
return billList.Where(kvPair => kvPair.Value.Key == key &&
                                kvPair.Value.Name == name).Select(kvPair => kvPair.Value);
This code assumes that the Bill class contains a Key and a Name field.