I would recommend implementing a custom **Item** validation rule.

> Note: This is different from a field validation, in that it validates _the entire item_ instead of a single field.

# 1. Create custom validator
Create a new class that implements the `Sitecore.Data.Validators.StandardValidator` base class. In the `Evaluate()` method, get both fields and check to see if either of them has a value:

    public class AtLeastOneFieldPopulatedValidator : StandardValidator
    {
    	public override string Name => "At Least One Field Populated";
    
    	public AtLeastOneFieldPopulatedValidator() {}
    
    	public AtLeastOneFieldPopulatedValidator(SerializationInfo info, StreamingContext context) : base(info, context) {}
    
    	protected override ValidatorResult Evaluate()
    	{
    		Item item = base.GetItem();
    		if (item == null)
    		{
    			return ValidatorResult.Valid;
    		}
    		if (!string.IsNullOrEmpty(item["Field 1"]) || !string.IsNullOrEmpty(item["Field 2"]))
    		{
    			return ValidatorResult.Valid;
    		}
    		return base.GetFailedResult(ValidatorResult.CriticalError);
    	}
    
    	protected override ValidatorResult GetMaxValidatorResult()
    	{
    		return base.GetFailedResult(ValidatorResult.Error);
    	}
    }

# 2. Create `Validation Rule` item
First, create a new `Validation Rule` (template `/sitecore/templates/System/Validation/Validation Rule`) item somewhere below this node:

`/sitecore/system/Settings/Validation Rules/Item Rules`

[![item validator tree][1]][1]

> Important: Make sure you populate the `Type` field with your fully-qualified name of your custom validator's class (e.g. `Custom.Services.AtLeastOneFieldPopulatedValidator, Custom.Services`).

# 3. Associate your `Validation Rule` to your items
On the `__Standard values` of your item's template, show Standard Fields (View ribbon tab -> Standard fields) and add your `Validation Rule` to the appropriate validation fields. I recommend including it in all four.

# (Optional) Extra credit: Add parameters 
I've not tested this, but I'm sure there's a way to pass parameters using the `Parameters` field on the `Validation Rule` item. In these parameters, you could pass a list of the fields to check so your validator can be reused by creating multiple `Validation Rule` items in Sitecore.

[![parameters field][2]][2]


  [1]: https://i.sstatic.net/hkoEZ.png
  [2]: https://i.sstatic.net/CSdr4.png