Create a class where you can keep a strong reference to a Target.
Full working example:
public class MainActivity extends AppCompatActivity {
  private final List<Service> services = new ArrayList<>();
  {
    // add arbitrary data just for the example
    services.add(new Service("Android",
        "https://github.com/google/material-design-icons/raw/master/action/drawable-xhdpi/ic_android_black_24dp.png"));
    services.add(new Service("Account",
        "https://github.com/google/material-design-icons/raw/master/action/drawable-xhdpi/ic_account_circle_black_24dp.png"));
    services.add(new Service("Shopping",
        "https://github.com/google/material-design-icons/raw/master/action/drawable-xhdpi/ic_add_shopping_cart_black_24dp.png"));
  }
  @Override public boolean onCreateOptionsMenu(Menu menu) {
    for (Service service : services) {
      // create a few MenuItems. Normally done in XML.
      MenuItem menuItem = menu.add(service.getName());
      menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
      // load the icon using Picasso
      addServiceToMenu(service, menuItem);
    }
    return super.onCreateOptionsMenu(menu);
  }
  private void addServiceToMenu(Service service, final MenuItem menuItem) {
    if (!TextUtils.isEmpty(service.getIconURL())) {
      Resources resources = getResources();
      final int targetWidth = resources.getDimensionPixelSize(R.dimen.menu_icon_size);
      final int targetHeight = resources.getDimensionPixelSize(R.dimen.menu_icon_size);
      final MenuItemIconLoader loader = new MenuItemIconLoader(menuItem, targetHeight, targetWidth);
      loader.load(MainActivity.this, service);
    }
  }
  class MenuItemIconLoader {
    private final WeakReference<MenuItem> itemWeakReference;
    private final int targetHeight;
    private final int targetWidth;
    public MenuItemIconLoader(MenuItem menuItem, int targetHeight, int targetWidth) {
      this.itemWeakReference = new WeakReference<>(menuItem);
      this.targetHeight = targetHeight;
      this.targetWidth = targetWidth;
    }
    private final Target target = new Target() {
      @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
        MenuItem menuItem = itemWeakReference.get();
        if (menuItem != null) {
          Drawable drawable = new BitmapDrawable(getResources(), bitmap);
          drawable.setBounds(0, 0, targetWidth, targetHeight);
          menuItem.setIcon(drawable);
        }
      }
      @Override public void onBitmapFailed(Drawable errorDrawable) {
      }
      @Override public void onPrepareLoad(Drawable placeHolderDrawable) {
      }
    };
    public void load(Context context, Service service) {
      Picasso.with(context).load(service.getIconURL()).resize(targetWidth, targetHeight).into(target);
    }
  }
  static class Service {
    private String name;
    private String iconUrl;
    public Service(String name, String iconUrl) {
      this.name = name;
      this.iconUrl = iconUrl;
    }
    public String getName() {
      return name;
    }
    public String getIconURL() {
      return iconUrl;
    }
  }
}