Here we go BrailleSchool.

First of all your post was nicely detailed so I was able to replicate your code easily in a new mvc application.

Secondly this code will check for a company and add an error to the ModelState if it finds it already exists.
The existing code is wrapped in the else statement.

Code:
        //
        // POST: /Account/Register
        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                // Add condition to check if company exists
                var context = new ApplicationDbContext();
                var companyExists = context.Users.Where(u => u.TenantInfo.CompanyName == model.CompanyName).Count() > 0;
                context.Dispose();
                if (companyExists)
                {
                    ModelState.AddModelError("", "Company already exists");
                }
                else
                {
                    // Wrap existing code in else statement

                    var user = new ApplicationUser
                    {
                        TenantInfo = new TenantInfo
                        {
                            CompanyName = model.CompanyName,
                            FirstName = model.FirstName,
                            MiddleName = model.MiddleName,
                            LastName = model.LastName,
                        },

                        UserName = model.Email,
                        Email = model.Email
                    };
                    //var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
                    var result = await UserManager.CreateAsync(user, model.Password);
                    if (result.Succeeded)
                    {
                        await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);

                        // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                        // Send an email with this link
                        // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                        // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                        // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                        return RedirectToAction("Index", "Home");
                    }
                
                AddErrors(result);
                }
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }
There is one part element of this solution I personally do not like and that is the ApplicationDBContext instance
Code:
 var context = new ApplicationDbContext();
A lot of the methods on UserManager are extension methods. you may prefer to write an extension method for FindByCompany(), especially if you need the search to be async, you could write an async extension method