Is it possible to get a z-score greater than 3? I am doing a psychology study with 361 adults 18-62+ years old. I have tested for various variables and got z-scores well beyond 3 such as 9, 14  and the like. I have been told that my data is non-normal. Does that mean my z-scores are correct or am I doing something wrong?
 A: I will assume that you mean variables that are standardized by their own sample statistics.
Z-values larger than $3$ are certainly possible at $n=361$ for normally distributed data.  Indeed, the largest-magnitude z-score should exceed 3 more than half the time. (If the data were drawn from a non-normal distribution, it can happen as low as $n=11$.)
Here is the distribution of the largest absolute z-score from samples of size 361 from normally-distributed populations (by simulation).

If you were looking at a single variable, values for the largest magnitude of z-score much past $4$ would be somewhat surprising for samples of this size drawn from a normal distribution. If you're looking at say $20$ variables you would expect some to be bigger than $4$ but you might find a value like say $4.6$ or so somewhat surprising. Values much beyond $5$ are usually not credible for samples of size $361$ from a normal distribution (in the sense that a value at least that large would be an extremely rare occurrence), unless you looked at very large numbers of variables.

However, it's not clear why you would care whether any of these variables might be normally distributed (in fact I'd be surprised if any were actually drawn from normal distributions but that shouldn't usually be of any consequence).
Why would it matter if the distribution that some variable was drawn from was a normal distribution?
(What are you doing that would require normal distributions for any of these variables?)
A: For a data point $x$ and a distribution with mean $\mu$ and standard deviation $\sigma$, the z-score is just $(x-\mu) / \sigma$. So, a high z-score means the data point is many standard deviations away from the mean. This could happen as a matter of course with heavy/long tailed distributions, or could signify outliers. A good first step would be good to plot a histogram or other density estimator and take a look at the distribution.
A: This is an old question, but just to add another example here to illustrate how this can happen. Lets randomly generate a set of data on IQ scores that is normally distributed but has one extreme outlier: a really, really smart kid:
#### Load Libary and Set Random Seed ####
library(tidyverse)
set.seed(123)

#### Create Data ####
data <- tibble(subject = 1:50,
               iq = round(rnorm(n=50,
                          mean=120,
                          sd=15)))

#### Assign Very Smart Subject ####
data[1,2] <- 300

Running a density plot of the data:
#### Plot Density of Scores ####
data %>% 
  ggplot(aes(x=iq))+
  geom_density(fill = "steelblue",
               alpha = .4)+
  labs(x="Intelligence Quotient",
       y="Density",
       title = "Normal Density vs IQ = 300")+
  scale_x_continuous(limits = c(80,320))

You can see that the original normal distribution still exists but the person with 300 IQ is very much an outlier now:

To figure out just how much of an outlier, we can create a variable called z_score which gets the number of standard deviations above/below the mean for each subject and then filter for those equal to or above 3 SD:
#### Create Z Scores ####
data %>% 
  mutate(z_score = (iq-mean(iq))/sd(iq)) %>% 
  filter(z_score >= 3)

We can see this person has a crazy z-score...its 6 standard deviations above the mean:
# A tibble: 1 × 3
  subject    iq z_score
    <int> <dbl>   <dbl>
1       1   300    6.09

We can visualize just how extreme by plotting the same data but now with 3 standard deviations above and below the mean marked with red dashed lines:
#### Plot Z Score Limits ####
data %>% 
  mutate(z_score = (iq-mean(iq))/sd(iq),
         sd = sd(iq),
         mean = mean(iq)) %>% 
  ggplot(aes(x=iq))+
  geom_density(fill = "steelblue",
               alpha = .4)+
  labs(x="Intelligence Quotient",
       y="Density",
       title = "Normal Density vs IQ = 300")+
  geom_vline(aes(xintercept=mean+(3*sd)),
             color="red",
             linetype="dashed")+
  geom_vline(aes(xintercept=mean-(3*sd)),
             color="red",
             linetype="dashed")+
  scale_x_continuous(limits = c(0,320))

And here you can see that the smart kid is far above the metric we set:

